public static <T> void func1(T[][] arr) {
...
}
public static <T> void func2(T[] arr) {
...
}
我试图传递一个二维数组,int[][] arr
。
我不能使用func1(arr)
,但我可以使用func2(arr)
有人能解释一下这是如何工作的吗?
public static <T> void func1(T[][] arr) {
...
}
public static <T> void func2(T[] arr) {
...
}
我试图传递一个二维数组,int[][] arr
。
我不能使用func1(arr)
,但我可以使用func2(arr)
有人能解释一下这是如何工作的吗?
T[]
表示某个泛型对象的数组。任何数组类型(包括int[]
)都是一个对象。因此,当 T = int[]
时,int[][]
是有效的 T[]
。
然而,由于 int
不是一个对象,所以 int[][]
不是有效的 T[][]
。
如果你使用 Integer
而不是 int
,你应该能够:
Integer[][] arr
调用 func1
Integer[] arr
或 Integer[][] arr
调用 func2