我想知道采用哪种方法来创建二维“类似数组”(或数组)的泛型。
创建列表列表
LinkedList<LinkedList<T>> myObject;
或者这种方法,更直观,但需要使用Refefcltion来检索类型。
T[] testArray = c.cast(Array. newInstance(c.getComponentType(), dim1, dim2));
这个想法是我有一个包含成员变量的类:
public class Board<T>
{
T[][] array;
public Board(int vertical_size, int horizontal_size)
{
array = new T[vertical_size][horizontal_size]; //which is not allowed because of the way that java implements Generics
}
}
我应该采用上面列出的两种方法中的哪一种......或者是否有更好的方法来解决这个问题?
最佳答案
您不需要 T[][]
- 您可以使用Object[][]
同样容易(并在需要时转换为 T
)。如果您只允许T
,这应该不会造成问题实例来填充数组。
事实上,如果你take a look ,你会发现 ArrayList<T>
由 Object[]
支持(不是 T[]
)并使用类似的方法:
111 private transient Object[] elementData;
...
336 @SuppressWarnings("unchecked")
337 E elementData(int index) {
338 return (E) elementData[index];
339 }
我想,如果您不需要动态调整面板大小,这种方法将比列表列表更有效。
关于java - 二维对象包装 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17901066/