Java中的类型擦除和重载:为什么这有效?
2022-09-02 22:03:18
我有以下代码:
public class Pair< T, U > {
public T first;
public U second;
}
public class Test {
public int method( Pair< Integer, Integer > pair ) {
return 0;
}
public double method( Pair< Double, Double > pair ) {
return 1.0;
}
}
这实际上像人们期望的那样编译和工作。但是,如果返回类型相同,则不会编译,并且预期的“名称冲突:method(Pair)和method(Pair)具有相同的擦除”
假设返回类型不是方法签名的一部分,那么这种重载是如何实现的呢?