문제

개인 내부 클래스로 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 항상 만들어졌습니다. 액세스 제어 형태입니까? 그게 어떻게 작동합니까?

도움이 되었습니까?

해결책

이 클래스는 개인 생성자에 대한 액세스를 제공하기 위해 만들어졌습니다.

보세요 이 질문 자세한 내용은.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top