gpt4 book ai didi

java - 有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 20:53:24 24 4
gpt4 key购买 nike

这个方法声明有什么区别:

public static <E extends Number> List<E> process(List<E> nums){

 public static List<Number> process(List<Number> nums){

你会在哪里使用前者?

最佳答案

第一个允许 processList<Integer> , 一个 List<Double>等。第二个没有。

Java 中的泛型是不变的。它们不像数组那样是协变的。

也就是说,在 Java 中,Double[]Number[] 的子类型, 但是一个 List<Double>不是 List<Number> 的子类型.一个 List<Double>但是,是 List<? extends Number> .

泛型保持不变是有充分理由的,但这也是 extends 的原因。和 super类型通常是子类型灵 active 所必需的。

另见

关于java - <E extends Number> 和 <Number> 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2770264/

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