【发布时间】:2011-02-05 08:21:41
【问题描述】:
类型List中的add(capture#2-of ? extends IObject)方法不适用于参数(IDerived)
protected List<? extends IObject> getObjects()
{
List<? extends IObject> objects = new ArrayList<IObject>();
for (String id: item_ids)
{
IDerived object = (IDerived) readObject(id);
objects.add(object); #error
}
return objects;
}
interface IDerived extends interface IVersionedObject extends interface IObject
如果我将对象的类型更改为 List,那么错误就会消失,这是没有意义的,因为它必须对函数返回类型进行完全相同的强制转换。
【问题讨论】:
-
你的
objects不应该被实例化为new ArrayList<IDerived>()吗? -
@biziclop,为什么不将其发布为答案?
-
我的回答可能太过分了。我以为你在问为什么与如何修复它。
-
@finnw 因为我手头没有 Eclipse 来测试它是否可以编译,所以我没有时间写一个解释。