gpt4 book ai didi

java - 在树节点数据中构造和实现聚合(或类似)方法的最佳模式

转载 作者:搜寻专家 更新时间:2023-11-01 03:42:02 24 4
gpt4 key购买 nike

在树节点数据的层次结构上实现聚合(或类似)方法时遇到问题。可以看出泛型在这里有点过度使用,这对我来说并不令人满意,所以我的问题是:有没有更好的方法来实现它(可能避免在聚合方法中向下层次结构中从 Object 强制转换)?

当前情况(删除不相关的细节):

public interface AggregableTreeData<T extends AggregableTreeData> {
void aggregate(T from);
}

public abstract class FruitTreeData<T extends FruitTreeData<?>>
implements AggregableTreeData<T> {

private BigDecimal size = BigDecimal.ZERO;

@Override
public void aggregate(T from) {
this.size = this.size.add(from.size);
}
}

public class OrangeTreeData<T extends OrangeTreeData<?>>
extends FruitTreeData<T> {

private boolean ripened = false;

@Override
public void aggregate(T from) {
this.ripened = this.ripened || from.ripened;
}
}

另外我有一个方法,执行树数据聚合,看起来像:

//child.getData() and node.getData() is of type <T extends AggregableTreeData<T>>
void aggregateNode(TreeNode node) {
for (TreeNode child : node.getChildren()) {
aggregateNode(child);
node.getData().aggregate(child.getData());
}
}

最佳答案

看起来很像复合模式的工作。

关于java - 在树节点数据中构造和实现聚合(或类似)方法的最佳模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12093949/

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