我维护2个具有相同功能的项目,并将此功能整合到一个公共项目中。我定义的接口:(Java)如何使用有界通配符实现接口方法?
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...
的错误如何解决此编译错误?也许更好的问题是,我应该使用有界通配符(即?扩展)来定义我的接口方法吗?
你在哪一行得到错误? – j13r 2012-03-18 19:02:33
你不能指定一个'List <?将ShapeData>'扩展到'List'。没有看到一些背景知识,很难知道该建议什么。 –
2012-03-18 19:02:46