【发布时间】:2021-02-10 20:14:56
【问题描述】:
我目前正在准备我的 Java SE 11 开发人员证书,但我似乎无法理解类型擦除的概念。我有以下课程:
public class BaseClass {
public List<? extends CharSequence> transform(Set<? extends CharSequence> set) {
return null;
}
}
public class SubClass extends BaseClass {
@Override
public List<String> transform(Set<String> set) {
return null;
}
}
据我了解,类型擦除会将方法签名变成以下内容:
public List<? extends CharSequence> transform(Set set) {
return null;
}
public List<String> transform(Set set) {
return null;
}
这对我来说似乎是一个有效的覆盖。然而,当我编译程序时,我收到以下错误:
名称冲突:covariant.car.SubClass 中的 transform(java.util.Set
) 和 transform(java.util.Set extends java.lang.CharSequence>) 在 covariant.car.BaseClass 中具有相同的擦除,但都不会覆盖另一个
我在这里错过了什么?
【问题讨论】:
标签: java oop generics compiler-errors