【问题标题】:Passing int[][] as generic parameter将 int[][] 作为通用参数传递
【发布时间】:2019-04-20 16:35:21
【问题描述】:
public static <T> void func1(T[][] arr) {
    ...
}

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

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

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

谁能解释一下这是如何工作的?

【问题讨论】:

    标签: java generics methods parameters parameter-passing


    【解决方案1】:

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

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

    【讨论】:

    • 要对此进行扩展,您可以将其更改为 Integer[][] arr;它应该可以工作。
    • @LadyCailin 是的,但在大多数情况下,当您需要多维数组时,使用包装器类型确实是个坏主意
    【解决方案2】:

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

    • 致电func1Integer[][] arr
    • 使用Integer[] arrInteger[][] arr 致电func2

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 2018-02-07
      • 2013-12-16
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 2015-12-24
      相关资源
      最近更新 更多