我维护了 2 个具有相同功能的项目,并将此功能整合到一个公共项目中。我定义了一个接口:
public interface GraphData
{
public List<? extends ShapeData> getShapes();
public void setShapes( List<? extends ShapeData> shapes );
}
我在两个项目中都实现了这个接口:
public class Graph implements GraphData
{
public List<Shape> shapes = new ArrayList<Shape>();
public List<? extends ShapeData> getShapes()
{
return shapes;
}
public void setShapes( List<? extends ShapeData> shapes )
{
this.shapes = shapes;
}
}
Shape
是 的子类型ShapeData
。当我编译这个类时,我收到一个关于强制转换的错误List<Shape>
如何List<? of...
解决这个编译错误?也许更好的问题是,我应该使用有界通配符(即?扩展)定义我的接口方法吗?