如何为其他泛型类声明抽象泛型超类?
public class CampionsLeague<Team> extends League<Team> {
...
在League<Team>
我得到错误:
“绑定不匹配:类型 Team 不是 League<Team> 类型的有界参数 <Team extends Comparable<Team>> 的有效替代品”
如何为其他泛型类声明抽象泛型超类?
public class CampionsLeague<Team> extends League<Team> {
...
在League<Team>
我得到错误:
“绑定不匹配:类型 Team 不是 League<Team> 类型的有界参数 <Team extends Comparable<Team>> 的有效替代品”
League<X>
正如错误明确指出的那样,除非X
满足League
's 声明中声明的约束,否则您不能编写。
您需要约束派生类的泛型参数以匹配基类中的约束:
public class ChampionsLeague<Team extends Comparable<Team>> extends League<Team>
如果你有泛型类
class League<T extends Comparable<T>>
并且您想创建其通用子类,您必须确保满足所有约束:
class ChampionsLeague<T extends Comparable<T>> extends League<T>
但是当您想使用提供的泛型类型对类进行子类化时,例如有一个类:
class Team implements Comparable<Team>
您不应在派生类名称中重复此类型:
class ChampionsLeague extends League<Team>
像这样的东西:
class ChampionsLeague<Team> extends League<Team>
class ChampionsLeague<Team extends Comparable<Team>> extends League<Team>
编译器会将其视为由League
新的占位符隐藏先前的泛型类型。幸运的是,你的 IDE 应该会警告你,你会看到如下内容:
The type parameter Team is hiding the type Team.