gpt4 book ai didi

java - 有界类型参数

转载 作者:行者123 更新时间:2023-12-02 03:23:54 30 4
gpt4 key购买 nike

对不起,大家,这可能是一个天真的问题。

我对有界类型参数和通配符有点困惑。 <T extends String> 和有什么不一样?和<? extends String>

谢谢

最佳答案

我认为你在这里混淆了一些东西。

<T extends String>在声明泛型类时使用。

<? extends String>用于已经通用的类的实例。

我们以集合框架中的接口(interface)“List”为例: List <E>List <E extends Object> 相同这意味着您可以将列表与从 Object 继承的每种数据类型一起使用。

通配符<?>只能用于已经是通用的类。以上面的 List<E>. 为例假设您有一个使用 List 的方法,但您不想允许从 Object 继承的每种数据类型。

您可以使用不同的数据类型,例如:

public void myMethod(List<String> list){
//…
}

但是您也可以使用您想要允许的一系列数据类型:

public void myMethod(List<? extends String> list{
//..
}

在第二个示例中,您可以使用与字符串协变的每种数据类型,即字符串的子级。

Tldr:

界限<T extends String>用于声明泛型类支持的数据类型范围。

通配符 <? extends String>用于已经通用的类,并将给定的数据类型限制在一定范围内。

关于java - 有界类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39240644/

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