2017-02-20 24 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

相關問題