gpt4 book ai didi

java - 的用法?扩展 Java 泛型中的任何对象

转载 作者:行者123 更新时间:2023-11-30 06:04:25 25 4
gpt4 key购买 nike

    List<? extends Number> l = new ArrayList<Integer>();

我有上面的代码行。对象“l”可以引用任何可以是 Number 它的任何子类型的对象。我知道我们不能在上面的列表中添加任何内容。那么“?extends any_object”有什么用,因为我们不能向它添加任何东西?在什么样的上下文中使用它?谁能解释一下。

谢谢!!

最佳答案

它对方法参数最有用。考虑一下:

public void printFormatted(Collection<? extends Number> values) {

NumberFormat format = new DecimalFormat("0.000");

for (Number value : values) {
System.out.println(format.format(value));
}

}

如果我用 Collection<Number> 声明方法,调用者必须传递一个集合(或列表或集合),其泛型类型已知为数字。他们不能通过 Collection<Integer> ,因为 Collection 不是 Collection 的子类,实际上与 Collection 不兼容。

通过使用 Collection<? extends Number> 声明方法,我是说调用者可以传递 Collection 、Collection 或 Collection 等。List 或 Set 也是可以接受的,因为 class是多态的,即使泛型类型不是。

关于java - 的用法?扩展 Java 泛型中的任何对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49525614/

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