私は、次のJavaコードで定義された内部クラスをインスタンス化しよう:Javaでリフレクションして内部クラスをインスタンス化する方法は?
public class Mother {
public class Child {
public void doStuff() {
// ...
}
}
}
私はこの
のように子供のインスタンスを取得しようとすると、私はこの例外を取得:
java.lang.InstantiationException: com.mycompany.Mother$Child
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
...
私は何が欠けていますか?
あなたの内部クラスは静的ではありません...これは目的ですか?おそらくC#の背景から来るでしょうか? ;) – fge
静的なアイデアをお寄せいただきありがとうございます!実際、内部クラスの代わりに静的ネストされたクラスを使用することは、私の人生を楽にします。 – Stephan
内部クラスがstatic宣言されていない場合、このクラスのインスタンスは外部クラスのインスタンスの存在に依存します。これは、すべての内部クラスがデフォルトで「静的」であり、親インスタンスなしでインスタンス化できるC#とは異なります。 – fge