Class.getDeclaredMethod
有以下javadoc。
如果这个类对象表示具有多个声明方法(名称和参数类型相同,但返回类型不同的)的类型(),则返回的数组为每个此类方法都有一个方法对象。
我知道我们不能重载具有相同名称和参数类型的方法。那么这个医生是什么意思?
发布于 2018-03-22 07:27:55
这可以发生在编译器综合桥方法的一般性。
事实上,这不仅仅是为了仿制药。
每当子类使用不同的返回类型重写方法时,编译器都会创建一个合成桥方法。
以下代码说明了这一点:
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**
https://stackoverflow.com/questions/49421718
复制