小编Ste*_*eve的帖子

泛型问题和数组

对不起,我想不出一个更简洁的标题.

我的问题是为什么以下代码可以工作:

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

6
推荐指数
1
解决办法
188
查看次数

标签 统计

java ×1