Mik*_*eev 2 java generics collections android list
在我的Android Studio项目中,我有简单的类结构:
public class P{}
public class A extends P{}
public class B extends P{}
Run Code Online (Sandbox Code Playgroud)
在另一个班级我有一个List:
private List<? extends P> data;
private List<A> listA;
private List<B> listB;
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这样做时:
data = listA; //it's ok
data.addAll(listB); //it calls error
Run Code Online (Sandbox Code Playgroud)
Android Studio中的第二行是红色,错误是:
addAll(java.util.Collection<capture<? extends com.mydomain.P>>)
in List cannot be applied to (java.util.List<com.mydomain.subclass.B>)
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
声明时private List<? extends P> data;您需要一个特定的类型,扩展p列表的内容,这是不必要的.你可以简单地使用:
private List<P> data;
Run Code Online (Sandbox Code Playgroud)
任何延伸P(B和A相似)的课程都将被接受.
(但这会妨碍你分配data = listA)
| 归档时间: |
|
| 查看次数: |
6447 次 |
| 最近记录: |