Java 如何创建泛型子类的实例?获取错误:";绑定不匹配:类型。。。不是有界参数的有效替代品……”; 公开课冠军联赛扩展联赛{ ...

Java 如何创建泛型子类的实例?获取错误:";绑定不匹配:类型。。。不是有界参数的有效替代品……”; 公开课冠军联赛扩展联赛{ ...,java,class,generics,object,Java,Class,Generics,Object,如何创建该类的实例 public class ChampionsLeague<Team extends Comparable<Team>> extends League<Team>{ ... ChampionsLeague=新ChampionsLeague(); 这不起作用: “绑定不匹配:类型团队不是类型冠军联赛的绑定参数的有效替代品。” 在代码中,Team只是一个占位符(在此上下文中称为类型变量),并且恰好隐藏了类型Team,而不是引用它。换句话说,该

如何创建该类的实例

public class ChampionsLeague<Team extends Comparable<Team>> extends League<Team>{
...
ChampionsLeague=新ChampionsLeague();
这不起作用:

“绑定不匹配:类型
团队
不是类型
冠军联赛
的绑定参数
的有效替代品。”


在代码中,
Team
只是一个占位符(在此上下文中称为类型变量),并且恰好隐藏了类型
Team
,而不是引用它。换句话说,该声明相当于:

ChampionsLeague<Team> league = new ChampionsLeague<>();
将工作:

public class Ball implements Comparable<Ball> {
    @Override
    public int compareTo(Ball o) { return 0; }
}
// or: public interface Ball extends Comparable<Ball> { }
championsleage测试=新championsleage();

编辑:

您可能想要实现的目标的一些可能性:

ChampionsLeague<Ball> test = new ChampionsLeague<Ball>();
//冠军联赛需要一个与球队相当的类型
公众阶级冠军联盟扩大了联盟{

//冠军联赛需要团队的子类型
//在这种情况下,您可以使团队实现在其自己的decl中具有可比性。
公众阶级冠军联盟扩大了联盟{

是的,泛型有时真的很棘手。我添加了一些建议来进一步帮助你。如果你同时解决了这两个问题(理解错误并得到你想要的)。@PeterBauer:这意味着你的问题(目前的情况)不能帮你解决问题(可能也不会帮助其他人),因此我将投票以“太本地化”结束。这并不意味着这是一个糟糕的问题,只是(目前)它可能会让其他人感到困惑,而不是帮助。@JoachimSauer这可能对其他人有帮助,因为“绑定不匹配:类型(…)不是绑定参数(…)的有效替代品”
ChampionsLeague<Ball> test = new ChampionsLeague<Ball>();
// ChampionsLeague needs a type Comparable to Team
public class ChampionsLeague<T extends Comparable<Team>> extends League<T> {
// ChampionsLeague needs a subtype of Team
// In this case, you can make Team implement Comparable<Team> in its own decl.
public class ChampionsLeague<T extends Team> extends League<T> {