我有一个我无法理解的Java重载问题。
代码如下:
private void f(Object o) {
}
private void f(Collection c) {
}
private <T> T dummy() {
return null;
}
private void g() {
f(dummy());
}
现在,dummy()返回一个未定义类型的对象,因此擦除应该导致一种Object类型。但是,调用f(dummy())实际上调用f(Collection)而不是f(Object)。为什么会这样?