개인 내부 클래스는 예상치 못한 익명 클래스를 종합합니다
-
13-09-2019 - |
문제
개인 내부 클래스로 Java 클래스를 컴파일하면 익명의 클래스가 어떤 이유로와 함께 자동으로 합성되는 것으로 보입니다. 이 수업은 그것을 재현하기에 충분합니다.
public class SynthesizeAnonymous {
public static void method() {
new InnerClass();
}
private static class InnerClass {}
}
컴파일되면 예상을 생성합니다 SynthesizeAnonymous.class
그리고 SynthesizeAnonymous$InnerClass.class
파일이지만 이상한 것이 생성됩니다 SynthesizeAnonymous$1.class
익명의 서브 클래스에 해당하는 파일 java.lang.Object
그것은 합성되었습니다. 분해를 보면 javap
, 기본 생성자가 나타납니다 InnerClass
이 익명 유형의 숨겨진 매개 변수를 얻습니다. null
할 때 전달됩니다 new InnerClass()
호출됩니다.
이 수업이 왜 만들어 졌습니까? 그것은 경우에도 만들어졌습니다 InnerClass
정적은 아니지만 IF가 생성되지는 않습니다 InnerClass
개인이 아니거나 인스턴스가 없습니다 InnerClass
항상 만들어졌습니다. 액세스 제어 형태입니까? 그게 어떻게 작동합니까?
해결책
이 클래스는 개인 생성자에 대한 액세스를 제공하기 위해 만들어졌습니다.
보세요 이 질문 자세한 내용은.
제휴하지 않습니다 StackOverflow