给定一个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 {

给定一个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 {
    public void someMethod() { ... }
}
给定D#someMethod的java.lang.reflect.Method对象,我可以轻松获得树:

D#someMethod
 |
 +- C#someMethod
 |   |
 |   +- A#someMethod
 |
 +- B#someMethod

我猜一定有一种简单的方法可以做到这一点,也许是现有的库?

最终没有找到一个有用的库,因此根据assylias评论,只是使用反射遍历继承并构建一个树(包括超类和接口)。我没有建立方法树,而是建立了一个类树,它随后可以被“遍历”。

您可以使用
类#getSuperClass()
方法遍历层次结构,并检查每个超类是否有该方法。Yup考虑过这一点,希望有更好的方法:)