ArrayList中的java对象不使用泛型保留其类型
我有一个二维的ArrayList
来存储Block
对象,以便以后使用。然而,当我通过列表中对象的索引获取它们时,它不允许我调用对象上的Block
方法。下面是我初始化列表的代码:
ArrayList<ArrayList> col = new ArrayList<ArrayList>();
for(int column = 0; column < SIZE; column++) {
// Add a row of block objects
col.add(new ArrayList<Block>());
// Populate the row
for(int row = 0; row < SIZE; row++) {
col.get(column).add(new Block());
grid.add((Block) col.get(column).get(row));
}
}
问题似乎是,当我将块添加到grid
(JPanel)时,除非我将对象转换回Block
,否则它不会编译。换句话说,grid.add(col.get(column).get(row))
不行。知道为什么会这样吗
# 1 楼答案
你需要这样
当你只有
ArrayList<ArrayList>
的时候,get是这样的因为
list
是一个没有类型的ArrayList,所以它总是返回一个对象如果你把它设为
ArrayList<ArrayList<Block>>
,它看起来像