Я хочу вызвать супер-метод метода с помощью отражения, но мой метод не работает, и я не уверен, что это возможно. Вот мой метод вызова метода super для метода equals(Object)
класса T, который здесь также называется targetClass:
private ToBooleanThrowingBiFunction<T> getSuperEquals() {
Class<T> targetClass = getTargetClass();
Class<?> superClass = targetClass.getSuperclass();
while ((superClass != Object.class) && (superClass != null)) {
try {
Method method = superClass.getDeclaredMethod("equals", Object.class);
return (thisOne, thatOne) -> {
try {
return (Boolean) method.invoke(thisOne, thatOne);
} catch (InvocationTargetException e) {
throw new IllegalStateException(e.getCause());
}
};
} catch (NoSuchMethodException e) {
superClass = superClass.getSuperclass();
}
}
throw new IllegalArgumentException(String.format("E10: No superclass of %s has an equals() method.", targetClass));
}
@FunctionalInterface
private interface ToBooleanThrowingBiFunction<T> {
boolean eval(T thisOne, T thatOne) throws IllegalAccessException;
}
Этот код правильно извлекает метод, содержащий метод super.equals () . Но когда я его вызываю, он выполняет метод equals () класса targetClass
. Есть ли способ сделать это?