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

Posted

技术标签:

【中文标题】将 int[][] 作为通用参数传递【英文标题】:Passing int[][] as generic parameter 【发布时间】: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)

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

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

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

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

【讨论】:

以上是关于将 int[][] 作为通用参数传递的主要内容,如果未能解决你的问题,请参考以下文章

Python将ref int作为参数传递

c语言向函数传递函数作为参数

将向量的引用作为参数传递

c++ - 如何将void函数作为参数传递?

如何将指向方法的指针作为另一个方法参数传递

如何将构造函数(可变参数)作为模板参数传递?