将 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
,您应该能够:
func1
和Integer[][] arr
使用Integer[] arr
或Integer[][] arr
致电func2
【讨论】:
以上是关于将 int[][] 作为通用参数传递的主要内容,如果未能解决你的问题,请参考以下文章