你能获得继承的方法的子类吗?

时间:2014-10-27 22:28:11

标签: java inheritance reflection methods

看看这段代码:

public class Main {

    public class A {
        public final void method() {}
    }

    public class B extends A {}

    public static main() {
        try {
            Method method = B.class.getMethod("method");

            //Returns the name of Main$A, but I want Main$B
            System.out.println(method.getDeclaringClass().getName());
        } catch (NoSuchMethodException e) {}
    }
}

我正在尝试从我之前从子类中获取的继承方法中获取该类。这样做的原因是在我的应用程序中,我将所有带有指定注释的方法存储到Set<Method>中,并将对象本身存储在Map<Class<?>, Object>中,以便以后轻松调用该方法。

我理解method.getDeclaringClass()返回Main$A是有意义的,因为那是宣告它的地方,而不是Main$B,但我只是想知道是否有其他方法可以解决我的问题。

1 个答案:

答案 0 :(得分:1)

您尝试以与java标准不兼容的方式重新编译类方法。我不认为有解决方法;你的代码应该反映事物的结构;即 使用getDeclaringClass()返回的类填充地图。