看看这段代码:
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
,但我只是想知道是否有其他方法可以解决我的问题。
答案 0 :(得分:1)
您尝试以与java标准不兼容的方式重新编译类方法。我不认为有解决方法;你的代码应该反映事物的结构;即
使用getDeclaringClass()
返回的类填充地图。