对不起,我想不出一个更简洁的标题.
我的问题是为什么以下代码可以工作:
public abstract class TObjectPool<T> {
protected Object[] availableObjects;
TObjectPool(int size){
availableObjects = new Object[size];
}
protected class RenderElementPool extends TObjectPool<RenderElement>{
@Override
public void fill() {
for (int i = 0; i < capacity; i++) {
availableObjects[i] = new RenderElement();
}
}
}
Run Code Online (Sandbox Code Playgroud)
什么时候不能使Object数组成为泛型:
public abstract class TObjectPool<T> {
protected T[] availableObjects;
TObjectPool(int size){
availableObjects = (T[]) new Object[size];
}
Run Code Online (Sandbox Code Playgroud)
当availableObjects [i] = new RenderElement(); 在后一个例子中执行line我得到一个ClassCastException.我理解为什么它在第一个例子中起作用但不是为什么它不在第二个例子中.availableObjects应该是RenderElement的数组,我试图给它一个RenderElement.我错过了什么关键信息?
谢谢您的帮助.
更新中...
非常感谢您的回复.我以为我理解但是我已经设法再次迷惑自己:
如果我添加功能:
public void add(int index, T object){
availableObjects[index] = object; …Run Code Online (Sandbox Code Playgroud) java ×1