Ich habe 2 Klassen, sagen wir ein & B:Invoke Super-Klasse Methoden Reflection
Class A extends B {
public void subClassMthd(){
System.out.println("Hello");
}
}
Class B {
public void printHelloWorld {
System.out.println("Hello");
}
}
Nun, ich bin mit Reflexion der Methoden auf der Klasse A. aufrufen würde ich auch die printHelloWorld Methode vorhanden aufrufen möchte in Klasse B.
ich versuchte
Class clazz = Class.forName("com.test.ClassA");
Object classAInstance= clazz.newInstance();
Method superClassmthd = classAInstance.getClass()
.getSuperclass().getMethod("printHelloWorld", null);
superClassmthd.invoke(classAInstance);
auch versucht als
mit 0Class clazz = Class.forName("com.test.ClassA");
Object classAInstance= clazz.newInstance();
Class superClazz = Class.forName(classAInstance.getClass().getSuperclass().getName());
Object superclassInstance = superClazz.newInstance();
Method superClassmthd = superclassInstance.getMethod("printHelloWorld", null);
superClassmthd.invoke(superclassInstance);
Aber keiner von ihnen funktioniert; sie werfen eine InstantiationException.
Was mache ich hier falsch?
Es ist nicht klar, was Sie versuchen genau das zu tun, weil der Code, den Sie haben zur Verfügung gestellt macht keinen Sinn. Könntest du mehr Details darüber geben, was du zu tun versuchst? –
Eine InstantiationException kann ausgelöst werden, wenn Sie versuchen, eine neue Instanz einer Klasse zu erstellen, nicht beim Aufrufen regulärer Methoden. Sind Sie sicher, dass Sie den richtigen Ort suchen, um das Problem zu lösen? – jarnbjo
Können Sie die Exception Stacktrace und den Code von Methode in Klasse B und (falls vorhanden) die überschriebenen und/oder überladenen Methoden aus Klasse A bereitstellen? Die Signaturen der Methoden sind ausreichend - es ist kein vollständiger innerer Methodencode erforderlich. –