gpt4 book ai didi

java "generic generic type"

转载 作者:行者123 更新时间:2023-11-30 11:20:36 26 4
gpt4 key购买 nike

在我的应用程序中,我有一个 Board。董事会由细胞组成。每个单元格都有一个 int 值。有几种类型的 Board 可以扩展 Board。每种类型的板将以不同方式表示单元格。例如,一个人会使用 List,另一个人会使用 Tree。

所以这是尝试过的:

public abstract class Board<T> {
T<Cell> cells; //error - The type T is not generic; it cannot be parameterized with arguments <Cell>

protected abstract void setValues(T<Integer> values);
}

不幸的是,我不能使 T 成为泛型。我该如何实现?

最佳答案

我发现你的方法太复杂了。 Peter.petrov 接近我要做的事情。

如果 List 和 Tree (TreeSet) 是您需要的,两者都实现了接口(interface) Collection 那么为什么不使用这个呢?除了添加、删除、迭代之外,您还需要任何额外的操作吗?

Collection (Javadoc)

所以你的课可以看看(我添加了一点 Java8 特性)

public abstract class Board {
Collection<Cell> cells;

// Don't need to be abstract
protected void setValues(Collection<Integer> values) {
Stream<Cell> transformed = values.stream().map(Cell::new);
cells.addAll(transformed.collect(Collectors.toList()));
}
}

class Cell {
private Integer value;

Cell(Integer value) {
this.value = value;
}
}

如果您需要(出于某种原因需要额外的东西,请扩展此类并实现/覆盖将执行特殊行为的方法)。希望我有所帮助,但我真的没有看到您的示例的用例。

关于java "generic generic type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22620909/

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