Ich versuche, die innere Klasse in dem folgenden Java-Code definiert zu instanziiert:Wie instanziiert innere Klasse mit Reflektion in Java?
public class Mother {
public class Child {
public void doStuff() {
// ...
}
}
}
Wenn ich versuche, diese eine Instanz des Kindes zu bekommen wie
Class<?> clazz= Class.forName("com.mycompany.Mother$Child");
Child c = clazz.newInstance();
ich diese Ausnahme erhalten:
java.lang.InstantiationException: com.mycompany.Mother$Child
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
...
Was fehlt mir?
Ähm, deine innere Klasse ist nicht statisch ... Ist das Absicht? Kommt vielleicht von einem C# Hintergrund? ;) – fge
Danke für den Vorschlag "statische" Idee! In der Tat macht die Verwendung einer statischen geschachtelten Klasse anstelle einer inneren Klasse mein Leben leichter. – Stephan
Die Sache ist, wenn eine innere Klasse nicht als statisch deklariert wird, Instanzen dieser Klasse von der Existenz einer Instanz der äußeren Klasse abhängen; Dies unterscheidet sich von C#, wobei alle inneren Klassen standardmäßig "statisch" sind und ohne eine übergeordnete Instanz instanziiert werden können. – fge