我有2個班,調用父類方法,比如說A & B:使用反射
Class A extends B {
public void subClassMthd(){
System.out.println("Hello");
}
}
Class B {
public void printHelloWorld {
System.out.println("Hello");
}
}
現在,我使用反射來調用A類的方法我也想調用printHelloWorld方法目前在B級
我嘗試使用
Class clazz = Class.forName("com.test.ClassA");
Object classAInstance= clazz.newInstance();
Method superClassmthd = classAInstance.getClass()
.getSuperclass().getMethod("printHelloWorld", null);
superClassmthd.invoke(classAInstance);
還試圖作爲
Class 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);
但他們都沒有工作;他們扔了一個InstantiationException。
我在這裏做錯了什麼?
目前還不清楚是什麼你正在嘗試做正是因爲你的代碼提供沒有任何意義。你能否提供你想要做的更多細節? –
當您嘗試創建類的新實例時(而不是在調用常規方法時),可能會引發InstantiationException。你確定你正在尋找合適的位置來解決問題嗎? – jarnbjo
你能否提供Exception Stacktrace和來自類B中方法的代碼,以及(如果存在)來自類A的重寫和/或重載方法?方法的簽名是足夠的 - 不需要完整的內部方法代碼。 –