'List <T>'可能不包含'Object'类型的类型对象

Ant*_*nko 4 java collections android

简短:
这可能是一个不是孩子的班级Object吗?

Long:
我正在使用List<T>包含interface(Operation)的实现:

public class OperationQueue<T extends Operation> {

    private final List<T> mQueue = new ArrayList<>();
    ...
}
Run Code Online (Sandbox Code Playgroud)

当我在循环中浏览此列表时,我将每个已完成的操作标记为null,因为我必须保持相同的大小并且我不能使用iterator(它抛出ConcurrentModificationException):

for (int i = 0; i < mQueue.size() && !mState.equals(State.PAUSED); i++) {
    mOperation = mQueue.get(i);
    if (mOperation != null) {
        mOperation.run();
    }
    mQueue.set(i, null);
}
Run Code Online (Sandbox Code Playgroud)

当我暂停或完成队列执行时,我使用:

mQueue.removeAll(Collections.singleton(null));

Android Studio向我显示警告:

'List<T>' may not contain type objects of type 'Object'

这怎么可能?我以为一切都是孩子的Object

任何帮助,将不胜感激.

Ric*_*ich 10

一切都是以下的孩子Object:但是你的List需要它们是Object 的特定类型的子类,即:类型T.

Collections.singleton(null)不是Ts的集合.尝试Collections.<T>singleton(null); 通过将说明符添加到方法调用,您将获得指定类型的集合.