【发布时间】:2020-07-25 00:33:07
【问题描述】:
这是怎么编译的:
interface Test {
<T extends Integer> T getValue(T n);
}
class Impl implements Test{
public Integer getValue(Integer n) {
return n;
}
}
但这不是:
interface Test {
Integer getValue(Integer n);
}
class Impl implements Test{
public <T extends Integer> T getValue(T n){
return n;
}
}
它给了我以下编译错误:
Impl 不是抽象的,不会覆盖抽象方法 测试中的getValue(Integer)
错误:名称冲突:Impl 中的 getValue(T) 和 Test 中的 getValue(Integer) 具有相同的擦除,但都不会覆盖另一个
不删除确保 T 被替换为整数吗? 那么为什么第二个例子无效呢?
【问题讨论】:
标签: java generics overriding