gpt4 book ai didi

java - 泛型扩展行类型

转载 作者:行者123 更新时间:2023-12-02 12:42:42 25 4
gpt4 key购买 nike

在下面的代码中,class Team提供泛型,

public class Team<T extends Player>
{

声明另一种类型 League使用泛型

public class League<T extends Team>
{

问题:来自以下有效代码:

League<Team<FootballPlayer>> league = new League<>();

我推断Team<FootballPlayer>延伸Team , 真的吗?不是有任何Team<T>的情况吗?是 Object 的子类(通常)但不是Team

最佳答案

Team<FootballPlayer> 扩展Team 。泛型和继承是两个不同的概念。在 Java 中,编译器使用泛型来确保接受方法参数、实例变量等时的类型安全。编译器和运行时虚拟机都使用继承来启用多态性等功能。一个类可以具有通用参数,并且还可以扩展另一个不相关的类。

从你的代码中,我推断 FootballPlayer延伸Player但是Team<?>不扩展Team规范<T extends Team> (如注释中所述,应该是 <T extends Team<?>> )意味着当编译器在 League 中看到这一行时类:

public void add(T team)

它将接受 add 的调用参数类型为Team或其任何子类。其他任何情况都会导致编译错误。

关于java - 泛型扩展行类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44869367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com