给定一个对象如何知道重写的继承方法

时间:2013-12-09 14:16:16

标签: java reflection

给出以下代码:

class A{
    int i;
        int hashcode(){
            . . .
        }
}

准确地说,给定a A的对象,怎么可以说在hashcode()类中覆盖了从Object类继承的A

a.getClass().getDeclaringClass()正在返回Object课程。我希望它输出A

2 个答案:

答案 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()