我有一个名为DrawableSegment
的接口和多个实现该接口的类,例如LineSegment
和PercentageSegment
。
我还有另一个名为BarChart
的类,它利用了这些类。
例如,BarChart
有一个名为Add(DrawableSegment segment)
的方法,该方法可以接受实现该接口的任何对象。
我想将其限制为实现该接口的相同类型的对象。因此,我不想将LineSegments
与PercentageSegments
混合使用,如果我添加了LineSegment
,我希望其余的添加项也都是LineSegments
。如果我添加PercentageSegments
,我希望其余的都是PercentageSegments
,如果我确实尝试添加LineSegment
,我希望它是类型错误。
有什么办法可以表达我吗?
最佳答案
你是这个意思吗?
import java.util.ArrayList;
import java.util.List;
interface DrawableSegment {}
class LineSegment implements DrawableSegment {}
class PercentageSegment implements DrawableSegment {}
class BarChart<T extends DrawableSegment> {
private List<T> drawableSegments = new ArrayList<>();
public void add(T drawableSegment) {
this.drawableSegments.add(drawableSegment);
}
public List<T> getDrawableSegments() {
return this.drawableSegments;
}
}
public static void main(String[] args) {
BarChart<LineSegment> barCharLineSegment = new BarChart<LineSegment>();
barCharLineSegment.add(new LineSegment());
barCharLineSegment.add(new PercentageSegment()); // Compiler Error: cannot be applied
}