인증 매개 변수 전달 으로 인 한 자바 컴 파일 오류"No enclosing instance of type XXX is access"및 익명 내부 클래스
1508 단어 자바StringClassinterfaceAllocation
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 {} .
// , ,
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.