ArrayList中的对象不保留使用泛型的类型
问题描述:
我有一个二维ArrayList
来存储Block
对象以供稍后使用。但是,当我通过列表中的索引获取它们时,它不会让我在对象上调用Block
方法。这里就是我初始化列表的代码:ArrayList中的对象不保留使用泛型的类型
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))
将不起作用。任何想法,为什么这可能会发生?
答
你需要它
ArrayList<ArrayList<Block>> col = new ArrayList<ArrayList<Block>>();
当你刚刚ArrayList<ArrayList>
的得到的是这样的
ArrayList<ArrayList> col = new ArrayList<ArrayList>();
ArrayList list = col.get(i);
Object obj = list.get(j);
由于list
是没有类型它总是会返回一个对象的ArrayList。
如果你把它当作ArrayList<ArrayList<Block>>
它看起来像
ArrayList<ArrayList<Block>> col = new ArrayList<ArrayList<Block>>();
ArrayList<Block> list = col.get(i);
Block obj = list.get(j);
+0
就是这样,谢谢! – EscapeNT 2011-02-22 22:07:29
(Euw,少见的类型。) – 2011-02-22 22:22:04
半熟的,其实。 – irreputable 2011-02-22 22:34:28