Ich mag würde, warum die folgenden verstehen, funktioniert nicht:Dynamische Instanz Schöpfung ohne Generika
public class HelloClass {
private class MyClass
{
public MyClass()
{
System.out.println ("Oh heck this is me!");
}
}
public Object newInstance (Object o)
{
try {
// java.lang.InstantiationException here
return o.getClass().newInstance();
} catch (Exception e) {
e.printStackTrace(System.out);
return null;
}
}
public void run()
{
MyClass m = new MyClass();
Object o = newInstance(m);
}
public static void main(String[] args)
{
HelloClass hd = new HelloClass();
hd.run();
}
}
Ich weiß, der richtige Weg, dies die newInstance Argument über Deklaration der Klasse <T>, zu erreichen, sondern würde Ich mag es zu verstehen, warum es nicht so wie oben gemacht werden kann.
UPD: Hier ist die Ausnahme, die ich bin immer:
java.lang.InstantiationException: HelloClass$MyClass
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
at HelloClass.newInstance(HelloClass.java:14)
at HelloClass.run(HelloClass.java:24)
at HelloClass.main(HelloClass.java:30)
Welche Klasse versuchen Sie zu instanziiert? Wenn es sich um eine abstrakte Klasse oder eine Schnittstelle handelt, funktioniert dies nicht und Sie erhalten eine InstantiationException. Vielleicht wäre es hilfreich, den Stack-Trace der Exception zu verwenden. – JasCav
Ich versuche, MyClass instanziieren, dachte, es ist ziemlich offensichtlich, wie ich NewInstance (m) aufrufen, wobei m eine Instanz von MyClass ist;). Die Ausnahme zum ursprünglichen Post wurde hinzugefügt. – azerole
Warum die Erwähnung von Generika im Titel? Was haben sie mit diesem Problem zu tun? – skaffman