인증 매개 변수 전달 으로 인 한 자바 컴 파일 오류"No enclosing instance of type XXX is access"및 익명 내부 클래스

1.실제 인삼 과 형 삼 의 차 이 를 검증 하기 위해 다음 코드 를 실행 합 니 다.
public class ArgPassTest {
    public class MyObject { //   public    
        public int value = 0;
        public MyObject(int a) {
            value = a;
        }
    }
    
    public static void test(MyObject obj) {
        obj.value = 20;
        obj = new MyObject(30); //  
    }
    
    public static void main(String[] args) {
        MyObject A = new MyObject(10); //  
        test(A);
        System.out.println(A.value);
    }
}

결 과 는 컴 파일 이 잘못 되 었 습 니 다.No enclosing instance of type ArgPassTest 에 액세스 할 수 있 습 니 다.x.new A()where x is an instance of ArgPassTest)유형 ArgPassTest(예:x.new A()where x is an instance of ArgPassTest)의 인 클 로 징 인 스 턴 스 로 할당 을 받 아야 합 니 다.
2.위의 오류 원인 및 수정 방법
[오류 원인]프로그램 은 정적 방법 에서 동적 내부 클래스 를 직접 호출 하면 이러한 오 류 를 보고 할 수 있 습 니 다. 이러한 오 류 는 클래스 의 정적 방법 과 같 아서 동적 방법 을 직접 호출 할 수 없다.
[수정 방법]이 내부 클래스 를 static 로 설명 할 수 있 습 니 다.정적 방법 에서 호출 하지 마 세 요.퍼 블 릭 클 라 스 마 이 오 브 젝 트 를 클 라 스 마 이 오 브 젝 트 로 바 꾸 고 ArgPassTest 밖 에 쓰 거나.
3.인터넷 에서 본 재 미 있 는 익명 내부 유형:
package test;

public interface Test {
 void a();
}

package test;

public class Test2 {
 Test t=new Test(){
  public void a() {
   System.out.println("  A  ");
  }
 };
 public static void main(String[] args) {
  Test2 t2=new Test2();
  t2.t.a();
 }
}
//   ,Test        ,             ,         ,
//   Test           {}          .
//  ,           ,           

좋은 웹페이지 즐겨찾기