给定一个java.lang.reflect.Method对象,有没有一种简单的方法可以获得它覆盖的方法的层次结构
给定一个java.lang.reflect.Method对象,是否有一种简单的方法可以获得它覆盖的方法的层次结构。例如:给定一个java.lang.reflect.Method对象,有没有一种简单的方法可以获得它覆盖的方法的层次结构,java,reflection,Java,Reflection,给定一个java.lang.reflect.Method对象,是否有一种简单的方法可以获得它覆盖的方法的层次结构。例如: class A { public void someMethod() { ... } } interface B { public void someMethod(); } class C extends A { public void someMethod() { ... } } class D extends C implements B {
class A {
public void someMethod() { ... }
}
interface B {
public void someMethod();
}
class C extends A {
public void someMethod() { ... }
}
class D extends C implements B {
public void someMethod() { ... }
}
给定D#someMethod的java.lang.reflect.Method对象,我可以轻松获得树:
D#someMethod
|
+- C#someMethod
| |
| +- A#someMethod
|
+- B#someMethod
我猜一定有一种简单的方法可以做到这一点,也许是现有的库?最终没有找到一个有用的库,因此根据assylias评论,只是使用反射遍历继承并构建一个树(包括超类和接口)。我没有建立方法树,而是建立了一个类树,它随后可以被“遍历”。您可以使用
类#getSuperClass()
方法遍历层次结构,并检查每个超类是否有该方法。Yup考虑过这一点,希望有更好的方法:)