所以,让我说我想写一个像ArrayList这样的东西 只是不是列表而是ArrayGrid(2维版本)
我已经发现ArrayList使用了Object [] 存储数据。
所以我做了一个
private Object[][] grid;
但我的getData方法抛出ClassCastException:
public E[][] getData(){
return (E[][]) grid;
}
以上方法和本方法:
public E get(int x, int y){
return (E) grid[x][y];
}
两人都给了我一个警告:"类型安全:未选中从对象投射到E"
我可以想象为什么,但我无法找到解决方案。那么ArrayList是如何做到的呢?
答案 0 :(得分:1)
Here ArrayList.java文件,如果有帮助的话。
编辑:这是您要查找的部分:
@SuppressWarnings("unchecked")
E elementData(int index) {
return (E) elementData[index];
}
/**
* Returns the element at the specified position in this list.
*
* @param index index of the element to return
* @return the element at the specified position in this list
* @throws IndexOutOfBoundsException {@inheritDoc}
*/
public E get(int index) {
rangeCheck(index);
return elementData(index);
}
编辑:更正 但是如果你使用泛型类型,你可以这样做,而不是使用object:
private E[][] grid; //seems to be impossible