泛型集合和方法返回类型

Fra*_*sco 2 java generics

我有一个方法的接口

public List< Object > getLeftBusinessObjects( List< Object > businessObjectIds, Object owningSystemId );
Run Code Online (Sandbox Code Playgroud)

我的实施是:

public List<Object> getLeftBusinessObjects(List< Object > businessObjectIds, Object owningSystemId)
{    
    List<MyObject> myObjs= Helper.getMyObjects(businessObjectIds);
    return myObjs;
}
Run Code Online (Sandbox Code Playgroud)

这样做我得到错误:

Type mismatch: cannot convert from List<MyObject> to List<Object>
Run Code Online (Sandbox Code Playgroud)

我必须以这种方式加倍演员

return (List<Object>) (Object) myObjs;
Run Code Online (Sandbox Code Playgroud)

避免错误.

有人能解释一下为什么吗?如果所有对象都具有每个dafault对象作为超类,为什么必须进行强制转换?

nar*_*yan 7

A List<MyObject>不是a List<Object>.,因为否则你就可以把a Object放进去了List<MyObject>

试试这个

public List<? extends Object> getLeftBusinessObjects(List< Object > businessObjectIds, Object owningSystemId)
{    
    List<MyObject> myObjs= Helper.getMyObjects(businessObjectIds);
    return myObjs;
}
Run Code Online (Sandbox Code Playgroud)