У меня есть 2 классов, скажем, A & B:методы класса Invoke Супер с помощью отражения
Class A extends B {
public void subClassMthd(){
System.out.println("Hello");
}
}
Class B {
public void printHelloWorld {
System.out.println("Hello");
}
}
Теперь я использую отражение для вызова методов в классе А. Я хотел бы также, чтобы вызвать метод, присутствующий 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
Можете ли вы предоставить Stacktrace исключения и код из метода в классе B и (если он существует) переопределенные и/или перегруженные методы из класса A? Подписи методов достаточно - нет необходимости в полном внутреннем методе кода. –