泛型方法数组参数的Java类型推断
类型推断似乎不适用于具有泛型方法的数组?我收到错误“该方法包含(T[],T)不适用于参数(int[],int)”。我应该怎么做泛型方法数组参数的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,因为泛型不能
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)