gpt4 book ai didi

java - 单个泛型参数同时接受两种不同类型

转载 作者:行者123 更新时间:2023-12-01 17:26:52 29 4
gpt4 key购买 nike

在下面的场景中,我有一个接受 2 个 E 类型数组的方法。据我了解,这个 E 参数意味着这两个数组可以是任何类型,但它们必须相同(正如我从 this 问题得出的那样) )。我已经用两个数组(一个整数和一个 double )对此进行了测试,但我没有收到任何错误。我收到的输出是“14”,这是两个数组的组合大小,没有抛出任何错误。

有人可以解释一下为什么会这样吗?

public static <E> void showCombinedLength(E[] array1, E[] array2){
System.out.println(array1.length + array2.length);
}

public static void main(String[] args) {
Integer[] integerArray = {1, 2, 3, 4, 5, 6, 7};
Double[] doubleArray = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 };
PrintArray.showCombinedLength(integerArray, doubleArray);
}

输出:

14

最佳答案

当您在方法定义中定义单个泛型类型时,您只能将该方法与两个相同类型的数组一起使用。

但是,在java中,数组类型是协变的,因此Integer[]和Double[]都是Object[]的子类(它们也是Number[]的子类)。因此您的代码始终会编译,并且无需指定多个类型参数。

关于java - 单个泛型参数同时接受两种不同类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14183170/

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