gpt4 book ai didi

Java:使用泛型指定类型的单个子类型

转载 作者:行者123 更新时间:2023-12-01 19:48:47 25 4
gpt4 key购买 nike

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

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

我想将其限制为实现该接口(interface)的相同类型的对象。所以我不想将 LineSegmentsPercentageSegments 混合,如果我添加 LineSegment 我希望其余的添加也为 >线段。如果我添加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
}

关于Java:使用泛型指定类型的单个子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52235556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com