将 int[][] 作为泛型参数传递

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

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

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

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

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


答案 1

T[]表示某个泛型对象的数组。任何数组类型(包括 )都是一个对象。因此,在 .int[]int[][]T[]T = int[]

但是,因为 不是对象,所以不是有效的 。intint[][]T[][]


答案 2

如果使用 代替 ,则应该能够:Integerint

  • 呼叫方式func1Integer[][] arr
  • 使用 或 调用func2Integer[] arrInteger[][] arr