我正在尝试将CustomObject添加到CustomObject列表中(它封装在另一个类CustomObjectList中)。 但是,我的控制台上出现以下错误:
Type CustomObjectList中的方法.add(CustomObject)不适用于参数(capture#5-of?extends ICustomObject)。
ICustomObject
是CustomObject实现的接口。
CustomObjectList
的实施方式如下:
class CustomObjectList {
private List<CustomObject> bar = new ArrayList<CustomObject>();
public List<CustomObject> getCustomObjectList() {
return this.bar;
}
public void add(CustomObject foo) {
this.bar.add(foo);
}
}
引发错误消息的代码如下:
CustomObjectList randomName = new CustomObjectList();
for (ICustomObject iCO : anOtherObject.getCustomObjectList()) {
randomName.add(iCO);
}
使用:
public class anOtherObject {
private CustomObjectList customObjectList;
public List<? extends ICustomObject> getCustomObjectList {
return customObjectList.getCustomObjectList();
}
}
有谁理解这似乎是什么问题?我在这里很茫然。我知道!,应该是泛型,但我不明白它是如何工作的......
答案 0 :(得分:2)
接口返回实现ICustomObject的对象列表,但这些对象可能不是CustomObject类(因为其他类也可能实现ICustomObject),因此您无法将这些返回的项添加到CustomObjects列表中