Wie man eine nicht statische innere Klasse mit Reflektion in Java instanziiert?

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 ?

Kommentar zu dem Problem - Öffnen
Uhm, deine innere Klasse nicht statisch ist... Ist das Absicht? Aus einem C# - hintergrund vielleicht? 😉 Kommentarautor: fge
Dank für die Annahme "statische" Idee! In der Tat, mit einer statisch geschachtelten Klasse statt eine innere Klasse machen das mein Leben erleichtert. Kommentarautor: Stephan
Die Sache ist die, wenn eine innere Klasse ist nicht als static deklariert ist, 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. Kommentarautor: fge

InformationsquelleAutor der Frage Stephan | 2013-07-05

Schreibe einen Kommentar