给出以下代码:
class A{
int i;
int hashcode(){
. . .
}
}
准确地说,给定a
A
的对象,怎么可以说在hashcode()
类中覆盖了从Object
类继承的A
。
a.getClass().getDeclaringClass()
正在返回Object
课程。我希望它输出A
。
答案 0 :(得分:1)
这应该符合您的需求:
public static Set<Method> findOverridingMethods(Object o) {
Set<Method> overridingMethods = new HashSet<Method>();
Class<?> clazz = o.getClass();
for (Method method : clazz.getDeclaredMethods()) {
Class<?> current = clazz.getSuperclass();
while (current != null) {
try {
current.getDeclaredMethod(method.getName(), method.getParameterTypes());
overridingMethods.add(method);
} catch (NoSuchMethodException ignore) {
}
current = current.getSuperclass();
}
}
return overridingMethods;
}
答案 1 :(得分:0)
我认为您必须使用通过
获得的Method
对象
getClass().getDeclaredMethod("hashCode").getDeclaringClass()