传递int [] []作为通用参数

时间:2018-11-17 21:12:02

标签: java generics methods parameters parameter-passing

public static <T> void func1(T[][] arr) {
    ...
}

public static <T> void func2(T[] arr) {
    ...
}

我正在尝试传递二维数组int[][] arr

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

有人可以解释一下这是怎么回事吗?

2 个答案:

答案 0 :(得分:24)

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

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

答案 1 :(得分:1)

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

  • func1呼叫Integer[][] arr
  • func2Integer[] arr呼叫Integer[][] arr