2017-02-20 3 views
-3

누구나 클래스 생성에 대해 알고 계십니까? 내부 클래스를 생성하여 부모 클래스의 private 생성자에 액세스하려고합니다. 생성 된 코드를 사용하는 것은 반사보다 훨씬 빠릅니다. JIT는 어느 정도의 시간 (콜드 스타트는 오랜 시간이 걸립니다)이 지난 후에만 반사를 최적화하므로 등의 합성 클래스가 필요합니다. ?어떻게 내부 클래스를 생성하여 부모 클래스의 개인 생성자에 액세스합니까?

답변

-1

내부 클래스는 항상 부모 클래스의 개인 필드와 메서드에 액세스 할 수 있습니다.

class A { 
    private A() { 
     System.out.println("private constructor called"); 
    } 

    static class Inner { 
     Inner() { 
      System.out.println("constructor of static inner class called"); 
      new A(); 
     } 
    } 

    public static void main(String[] args) { 
     new A.Inner(); 
    } 
} 
+0

내가 생성 한 의미는 입니까? 포인트는 원래 클래스가 그 내부 클래스가 없다는 것입니다 그래서 내가 런타임에 하나를 생성하려고하면 ASM 바이트 코드 생성기를 사용합니다. 이론상 그것은 일해야합니다. –

+0

내부 클래스가 부모에게 액세스 할 수있는 것을 볼 수 있으므로 –

+0

사용해 보셨습니까? 그런데 "정상적인"수업의 문제는 무엇입니까? 런타임에 * 생성해야하는 이유는 무엇입니까? – Aloso

관련 문제