public class IRock
{
public List<IMineral> getMinerals();
}
public class IMineral { ... }
public class SedimentaryMineral implements IMineral { ... }
public class SedimentaryRock implements IRock
{
private List<SedimentaryMineral> minerals;
@Override
public List<SedimentaryMineral> getMinerals()
{
return minerals;
}
}
获得一个编译器错误错误:的Java编译泛型
Type mismatch: cannot convert from List<SedimentaryMineral> to List<IMineral>.
我明白,我不能转换的IMPL回到它的API接口(因为API只比 - 一个API)。但我很困惑,为什么我得到一个编译器错误! Java不应该承认SedimentaryMineral
是IMineral
的impl并允许这个事实?!?
除了解释为什么我得到这个编译器错误,也许有人可能会指出为什么我的方法在这里是“坏设计”,我应该怎么做来纠正它。提前致谢!
这个问题的答案中有一个非常好的解释:http://stackoverflow.com/questions/5082044/most-efficient-way-to-cast-listsubclass-to-listbaseclass – 2012-04-09 15:50:02