私は同じ機能を持つ 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...
たぶんもっと良い質問は、バインドされたワイルドカード (つまり ? extends) を使用してインターフェイス メソッドを定義する必要があるかということです。