reflection - getMethods()/ getDeclaredMethods()(重复方法!)

时间:2017-06-19 21:21:47

标签: java reflection jvm

考虑以下简单的Java代码片段:

package p;   

class Sup {
    public Sup f() {return null;}
}

class Sub extends Sup {
    @Override public Sub f() {return null;}
}

我使用Java Reflection列出了类Sub的所有(声明的)方法,如下所示。

for(Method m : Sub.class.getDeclaredMethods())
            System.out.println(m);

但是我收到了如下输出:

  

public p.Sub p.Sub.f()

     

public p.Sup p.Sub.f()

第一行非常合理,但第二行让我困惑(即使它的返回类型不同)。请解释为什么我得到方法public p.Sup p.Sub.f()?在虚拟方法调用解析期间,JVM如何在运行时区分这两种方法?

谢谢。

0 个答案:

没有答案