Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将int[][]作为泛型参数传递 publicstaticvoidfunc1(T[]arr){ ... }_Java_Generics_Methods_Parameters_Parameter Passing - Fatal编程技术网

Java 将int[][]作为泛型参数传递 publicstaticvoidfunc1(T[]arr){ ... }

Java 将int[][]作为泛型参数传递 publicstaticvoidfunc1(T[]arr){ ... },java,generics,methods,parameters,parameter-passing,Java,Generics,Methods,Parameters,Parameter Passing,publicstaticvoidfunc2(T[]arr){ ... } 我试图传递一个二维数组,int[][]arr 我不能使用func1(arr),但我可以使用func2(arr) 有人能解释一下这是如何工作的吗?T[]表示一些通用对象的数组。任何数组类型(包括int[])都是对象。因此,int[][]在T=int[]时是有效的T[] 但是,由于int不是对象,int[][]不是有效的T[][]如果使用Integer而不是int,您应该能够: 使用Integer[]arr调用func1

publicstaticvoidfunc2(T[]arr){
...
}
我试图传递一个二维数组,
int[][]arr

我不能使用
func1(arr)
,但我可以使用
func2(arr)


有人能解释一下这是如何工作的吗?

T[]
表示一些通用对象的数组。任何数组类型(包括
int[]
)都是对象。因此,
int[][]
T=int[]
时是有效的
T[]


但是,由于
int
不是对象,
int[][]
不是有效的
T[][]

如果使用
Integer
而不是
int
,您应该能够:

  • 使用
    Integer[]arr调用
    func1
  • 使用
    Integer[]arr
    Integer[]arr调用
    func2

若要对此进行扩展,可以将其更改为整数[][]arr;它应该可以工作。@LadyCailin是真的,但在大多数情况下,当您需要多维数组时,使用包装器类型确实是个坏主意
public static <T> void func1(T[][] arr) {
    ...
}
public static <T> void func2(T[] arr) {
    ...
}