Java泛型,列表列表

Tho*_*mas 6 java generics

这件事让我难过.我有一个课程如下:

public class SpecialList implements List<MyType> {
    // overriden methods
}
Run Code Online (Sandbox Code Playgroud)

现在我有以下方法合同要尊重更高级别:

public class MyClass {
    private List<SpecialList> bigList = new ArrayList<SpecialList>();

    public void doStuff(List<MyType> list)
    {
        bigList.add((SpecialList)list); // does not compile - invalid cast
    }
}
Run Code Online (Sandbox Code Playgroud)

我真的不确定我在这里做错了什么.我有一个实现List<MyType>接口的类,但我不能将该类转换为List<MyType>?这对我没有任何意义.

我搞不清楚了.我应该做些什么来完成这项工作?我想这与泛型协方差有关,但此时我不知道这里有什么问题.有人能指出正确的方向吗?谢谢.

Ale*_*exR 1

您定义了List<MyList>(即列表MyList)。这意味着您只能添加 的实例MyList。如果您正在使用,addAll()您可以添加MyList. 但你正在尝试添加List<MyType>. MyType绝对不是MyList

而且你显然不能投射ListMyList.

  • 回复:“你显然不能将`List`转换为`MyList`”:我不会说“显然”,因为这正是OP所要求的。(这对我来说也不明显。) (2认同)