2017-02-20 57 views
-3

Кто-нибудь знает что-нибудь о создании класса? Я бы хотел создать внутренний статический класс для доступа к собственному конструктору родительского класса. Использование сгенерированного кода во много раз быстрее, чем отражение, поскольку 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? Точка в том, что у исходного класса нет этого внутреннего класса , поэтому я пытаюсь создать его во время выполнения с использованием генератора байт-кода ASM. в теории он должен работать. –

+0

Поскольку вы можете видеть, что внутренние классы могут получить доступ к родителям –

+0

Вы попробовали? И, кстати, в чем проблема с «нормальным» классом? Почему он должен быть сгенерирован * во время выполнения *? – Aloso