是否可以使用Java中指定的大小创建泛型类型参数的二维数组?
为了说明,我们可以创建一个这样的数组:
T[][] array = new T[x][];
答案 0 :(得分:3)
你提及" generic"在您的问题中,使用标识符T作为您的类型,因此我假设您正在讨论创建泛型类型参数的数组。
你不能用Java做到这一点。数组和泛型不能很好地混合。您可以使用反射(see this question)来执行此操作,但您可以更轻松地使用集合类来执行此操作。这将是一个列表列表,以获得2D衣衫褴褛的容器。
答案 1 :(得分:1)
不是泛型,但使用已知的类是可能的。对于通用,我建议使用ArrayList或类似的。
String[][] array = new String[2][];
可以这样使用:
array[0] = new String[1];
array[1] = new String[4];
array[0][0] = "Hello 0,0";
array[1][1] = "Hello 1,1 ";
System.out.println(array[0][0]);
System.out.println(array[1][1]);
答案 2 :(得分:0)
您需要一个通用的多维数组。你不能创建一个。但是,您可以创建一个Object
数组,然后进行投射。这是创建通用数组的“常用”方法:
@SuppressWarnings("unchecked")
T[][] array = (T[][])new Object[x][];
您需要@SuppressWarnings("unchecked")
因为演员表不安全并且已经过检查。从类型理论的角度来看,它甚至是“错误的”(类型Object
的数组不是T
的数组),但Java的类型系统具有这种不一致性,这是处理它的方法