gpt4 book ai didi

java - 将 ArrayList 转换为 varargs 构造函数的单独参数

转载 作者:行者123 更新时间:2023-12-01 13:46:08 27 4
gpt4 key购买 nike

我不确定我想做的事情是否可行,但我会预先解释原因,然后解释我想要做什么。

我正在使用一个进化计算框架,该框架本质上是从我将描述的构造函数生成一个树结构,其中每个节点可以有可变数量的子节点。

我正在尝试编写一个通用节点构造函数,它接受可变数量的参数,这些参数充当该节点的子对象(因此,根据此省略号,节点可以有从 1 到子对象)。

如果我要为 2 个子节点手动执行此操作,我会有一个如下所示的函数,其中 super 正在调用父类,该父类为当前节点创建整体结构:

public Wrapper(final SageProgram sp, final Node child1, final Node child2) {
super(child1, child2);
}

但是,正如我所提到的,我想扩展此功能,因此我正在尝试以下操作:

public NWrapper(final ArrayList<Node> children) {
super(children.toArray(new Node[children.size()]));
}

问题是我收到了 java.lang.ArrayStoreException,因为构造函数中的变量结果是数组类型 (Node[])单一类型(Node)。

有什么办法可以解决这个问题吗?

最佳答案

也许代替:

    public NWrapper(final ArrayList<Node> children) 

您可以将对象分为 Node[] 对象和 Node 对象。然后在 wrapper 内处理它们。 shell 将类似于以下内容:

    public NWrapper(final ArrayList<Node[]> children_lists, final ArrayList<Node> children)

您仍然需要根据需要处理对父类(super class)的调用。

关于java - 将 ArrayList 转换为 varargs 构造函数的单独参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20364151/

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