考虑下一个代码:
interface A {
A setX(Object x);
A setY(Object y);
}
interface B extends A {
B setX(Object x);
}
Run Code Online (Sandbox Code Playgroud)
如果您尝试使用B.class.getDeclaredMethods()jdk8,您将获得下一个方法:
public abstract B B.setX(java.lang.Object)和 public default A B.setX(java.lang.Object)
Javadoc说Class#getDeclaredMethods()只返回DECLARED方法,为什么返回2个方法呢?如果有人有解释,为什么第二种方法有'默认'修饰符?
我应该发布一个bug报告吗?这个问题是非常接近这一个,但影响的版本为JDK6和JDK7正常工作(返回一个方法)