Wie zu instanziieren, die eine innere Klasse mit reflection in Java?

Ich versuche zum instanziieren des inneren Klasse definiert, in der folgende Java-code:

 public class Mother {
      public class Child {
          public void doStuff() {
              //...
          }
      }
 }

Wenn ich versuche, eine Instanz von Kind

 Class<?> clazz= Class.forName("com.mycompany.Mother$Child");
 Child c = clazz.newInstance();

Bekomme ich diese exception:

 java.lang.InstantiationException: com.mycompany.Mother$Child
    at java.lang.Class.newInstance0(Class.java:340)
    at java.lang.Class.newInstance(Class.java:308)
    ...

Was bin ich ?

  • Uhm, deine innere Klasse nicht statisch ist... Ist das Absicht? Aus einem C# - hintergrund vielleicht? 😉
  • Dank für die Annahme "statische" Idee! In der Tat, mit einer statisch geschachtelten Klasse statt eine innere Klasse machen das mein Leben erleichtert.
  • Die Sache ist die, wenn eine innere Klasse ist nicht als static deklariert, Instanzen dieser Klasse hängt von der Existenz einer Instanz der äußeren Klasse; dies ist anders als bei C#, wo alle inneren Klassen sind "statisch", indem Standard-und instanziiert werden können, ohne eine übergeordnete Instanz.
InformationsquelleAutor Stephan | 2013-07-05
Schreibe einen Kommentar