我有一个名为DrawableSegment的接口和多个实现该接口的类,例如LineSegmentPercentageSegment

我还有另一个名为BarChart的类,它利用了这些类。
例如,BarChart有一个名为Add(DrawableSegment segment)的方法,该方法可以接受实现该接口的任何对象。

我想将其限制为实现该接口的相同类型的对象。因此,我不想将LineSegmentsPercentageSegments混合使用,如果我添加了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
}

08-26 02:43