Java 扩展行类型的泛型

Java 扩展行类型的泛型,java,generics,types,Java,Generics,Types,在下面的代码中,类团队提供了泛型 public class Team<T extends Player> { 问题:来自以下有效代码: League<Team<FootballPlayer>> league = new League<>(); 联盟=新联盟(); 我推断Team扩展了Team,这是真的吗? 任何团队都是对象(通常)的子类,但不是团队。团队不扩展团队。泛型和继承是两个不同的概念。在Java中,编译器在接受方法参数、实例变量等时使

在下面的代码中,
类团队
提供了泛型

public class Team<T extends Player>
{
问题:来自以下有效代码:

League<Team<FootballPlayer>> league = new League<>();
联盟=新联盟();
我推断
Team
扩展了
Team
,这是真的吗? 任何
团队
都是
对象
(通常)的子类,但不是
团队

团队
不扩展
团队
。泛型和继承是两个不同的概念。在Java中,编译器在接受方法参数、实例变量等时使用泛型来确保类型安全。编译器和运行时VM都使用继承来启用多态性等特性。一个类可以有泛型参数,也可以扩展另一个不相关的类


根据您的代码,我推断
FootballPlayer
扩展了
Player
,但
Team
没有扩展
Team
规范
(如评论中所述,应该是
为什么你会这样推断?不要使用原始类型。联赛的定义应该是
职业联赛
。你甚至不应该问自己是否
团队
扩展团队。团队是原始类型,你不应该使用原始类型。它们破坏了泛型的整个要点。不是吗谢谢,但是为什么前面的代码是有效的?我的意思是java中的团队如何处理它,它是什么~~!它是如何验证团队如果您有泛型类型团队的变量
gt
,以及原始类型团队的变量
rt
,那么
rt
可以分配给
gt
,反之亦然,因为使用原始类型基本上对编译器说:“我不关心泛型类型。回到编译的前泛型模式”。有关更多信息,请阅读JLS。还可以看到泛型类型中有子类型,但没有子类。
Team
Team
的子类型,但不是
Team
的子类。在类型变量边界中使用
extends
关键字只是对关键字的重用。类型变量实际上并没有扩展在绑定中指定的类。
League<Team<FootballPlayer>> league = new League<>();