小编Yev*_*din的帖子

Class#getDeclaredMethods()返回继承的方法

考虑下一个代码:

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正常工作(返回一个方法)

java reflection java-8

6
推荐指数
1
解决办法
1126
查看次数

标签 统计

java ×1

java-8 ×1

reflection ×1