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

泛型方法数组参数的Java类型推断,java,arrays,generics,type-inference,generic-method,Java,Arrays,Generics,Type Inference,Generic Method,类型推断似乎不适用于具有泛型方法的数组?我收到错误“该方法包含(T[],T)不适用于参数(int[],int)”。我应该怎么做 method(new int[1], 0); //Error ... public static <T> void method(T[] array, T value) { //Implement } 方法(新的int[1],0)//错误 ... 公共静态void方法(T[]数组,T值){ //实施 } 您可以使用整数而不是int,因为泛型不能

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

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

...

public static <T> void method(T[] array, T value) {
    //Implement
}
方法(新的int[1],0)//错误
...
公共静态void方法(T[]数组,T值){
//实施
}

您可以使用整数而不是int,因为泛型不能处理基元类型。

您可以使用整数而不是int,因为泛型不能处理基元类型。

为什么在这里使用
基元
类型。泛型仅适用于引用的
类型

method(new int[1], 0); //Error
最好一起去

 method(new Integer[]{1,2,3,4}, 0); //works fine

为什么要在这里使用
原语
类型。泛型仅适用于引用的
类型

method(new int[1], 0); //Error
最好一起去

 method(new Integer[]{1,2,3,4}, 0); //works fine

泛型不能处理基元类型,只能处理对象类型

由于自动装箱,您可以使用带有基元类型的泛型执行类似的操作:

<T> void methodOne(T value) {}

methodOne(1);  // Compiles OK, T = Integer.
但是,不能将这两个变量与同一类型变量混合使用:
int[]
Integer
是不相关的类型,因此没有一个类型变量
t
可以同时满足这两个参数的要求。从
int[]
Integer[]
没有等效的自动装箱运算符

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

method(new Integer[1], 0);

泛型不能处理基元类型,只能处理对象类型

由于自动装箱,您可以使用带有基元类型的泛型执行类似的操作:

<T> void methodOne(T value) {}

methodOne(1);  // Compiles OK, T = Integer.
但是,不能将这两个变量与同一类型变量混合使用:
int[]
Integer
是不相关的类型,因此没有一个类型变量
t
可以同时满足这两个参数的要求。从
int[]
Integer[]
没有等效的自动装箱运算符

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

method(new Integer[1], 0);

泛型不适用于基本类型,它仅适用于对象。尝试使用
新整数[1],改为0
。这也是
双精度
整数
布尔
,。。。是用Java创建的。你说原语不能与泛型类型一起使用是什么意思?int工作得很好,只是数组引起了问题顺便说一下,在这种情况下,泛型是无用的。如果声明为
publicstaticvoid方法(Object[]array,Object value)
泛型不适用于基元类型,它只适用于对象。尝试使用
新整数[1],改为0
。这也是
双精度
整数
布尔
,。。。是用Java创建的。你说原语不能与泛型类型一起使用是什么意思?int工作得很好,只是数组引起了问题顺便说一下,在这种情况下,泛型是无用的。如果声明为
publicstaticvoid方法(Object[]array,objectvalue)