Class.getDeclaredMethod
关注javadoc。
如果此Class对象表示具有多个声明的类型 方法与相同的名称和参数类型,但返回不同 类型,然后返回的数组有一个Method对象 方法
我知道我们不能重载一个具有相同名称和参数类型的方法。那么这个doc是什么意思呢?
答案 0 :(得分:3)
使用编译器合成的泛型桥接方法可能会发生这种情况。
实际上,它不仅仅适用于仿制药。
每当子类使用不同的返回类型覆盖方法时,编译器都会创建一个合成桥接方法。
以下代码演示了这一点:
public class Super {
public static void main(String... args) throws Exception {
for (Method method : Sub.class.getDeclaredMethods())
System.out.println(method + (method.isSynthetic() ? " **SYNTHETIC**" : ""));
}
public Number get() {
return Double.NaN;
}
}
class Sub extends Super {
@Override
public Integer get() {
return 42;
}
}
输出
public java.lang.Integer Sub.get()
public java.lang.Number Sub.get() **SYNTHETIC**