我維護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