0

如何为其他泛型类声明抽象泛型超类?

    public class CampionsLeague<Team> extends League<Team> {
    ...

League<Team>我得到错误:

“绑定不匹配:类型 Team 不是 League<Team> 类型的有界参数 <Team extends Comparable<Team>> 的有效替代品”

4

2 回答 2

3

League<X>正如错误明确指出的那样,除非X满足League's 声明中声明的约束,否则您不能编写。

您需要约束派生类的泛型参数以匹配基类中的约束:

public class ChampionsLeague<Team extends Comparable<Team>> extends League<Team>
于 2013-06-09T20:32:30.813 回答
-2

如果你有泛型类

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.
于 2013-06-09T20:33:10.290 回答