public static <T> void func1(T[][] arr) {
...
}
public static <T> void func2(T[] arr) {
...
}
我正在尝试传递二维数组int[][] arr
。
我不能使用func1(arr)
,但是我可以使用func2(arr)
有人可以解释一下这是怎么回事吗?
答案 0 :(得分:24)
T[]
表示一些通用对象的数组。任何数组类型(包括int[]
)都是对象。因此,int[][]
在T[]
时是有效的T = int[]
。
但是,由于int
不是对象,因此int[][]
不是有效的T[][]
。
答案 1 :(得分:1)
如果您使用Integer
而不是int
,则应该能够:
func1
呼叫Integer[][] arr
func2
或Integer[] arr
呼叫Integer[][] arr