这件事让我难过.我有一个课程如下:
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>?这对我没有任何意义.
我搞不清楚了.我应该做些什么来完成这项工作?我想这与泛型协方差有关,但此时我不知道这里有什么问题.有人能指出正确的方向吗?谢谢.
您定义了List<MyList>(即列表MyList)。这意味着您只能添加 的实例MyList。如果您正在使用,addAll()您可以添加MyList. 但你正在尝试添加List<MyType>. MyType绝对不是MyList。
而且你显然不能投射List到MyList.