2017-02-20 9 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について聞いたことがありますか? ポイントは、元のクラスはその内部クラスを持たないことです 私は実行時に1を生成しようとします ASMバイトコードジェネレータを使用します。理論的には で動作するはずです。 –

+0

内部のクラスが親にアクセスできることがわかるので –

+0

試しましたか?ところで、「普通の」クラスの問題は何ですか?実行時に*生成される必要があるのはなぜですか? – Aloso

関連する問題