Esc*_*eNT 1 java generics arraylist multidimensional-array
我有一个二维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));
}
}
Run Code Online (Sandbox Code Playgroud)
问题似乎是当我将块添加到grid(JPanel)时,除非我将对象强制转换为a,否则它将无法编译Block.换句话说,grid.add(col.get(column).get(row))
不会起作用.任何想法为什么会这样?
你需要它
ArrayList<ArrayList<Block>> col = new ArrayList<ArrayList<Block>>();
Run Code Online (Sandbox Code Playgroud)
当你刚刚ArrayList<ArrayList>得到的时候会看起来像这样
ArrayList<ArrayList> col = new ArrayList<ArrayList>();
ArrayList list = col.get(i);
Object obj = list.get(j);
Run Code Online (Sandbox Code Playgroud)
由于list是没有类型的ArrayList,它将始终返回一个Object.
如果你有它ArrayList<ArrayList<Block>>看起来像
ArrayList<ArrayList<Block>> col = new ArrayList<ArrayList<Block>>();
ArrayList<Block> list = col.get(i);
Block obj = list.get(j);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
273 次 |
| 最近记录: |