gpt4 book ai didi

Java - 泛型方法的数组参数的类型推断

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

类型推断似乎不适用于具有泛型方法的数组?我收到错误“方法包含(T[], T) 不适用于参数(int[], int)”。我应该怎么做?

method(new int[1], 0); //Error

...

public static <T> void method(T[] array, T value) {
//Implement
}

最佳答案

泛型不适用于原始类型,只能用于对象类型。

由于自动装箱,您可以使用具有原始类型的泛型来执行类似的操作:

<T> void methodOne(T value) {}

methodOne(1); // Compiles OK, T = Integer.

这里实际发生的是 int 文字 1 被“装箱”到 Integer.valueOf(1),即Integer 类型的对象。

您还可以将 int[] 传递给泛型方法,因为 int[] 本身就是一个对象类型。所以:

methodOne(new int[1]);  // Compiles OK, T = int[].

但是,您不能将这两个变量与同一类型变量混合使用:int[]Integer 不是相关类型,因此不存在单一类型变量T 这两个参数都满足。从 int[]Integer[] 没有等效的自动装箱运算符。

因此,您需要传递一个 Integer[] 数组作为第一个参数:

method(new Integer[1], 0);

关于Java - 泛型方法的数组参数的类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36518067/

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