我怎样才能拥有这两个构造函数?

How can I have both of these constructors?

我正在为一款起源于尼泊尔的名为 Tigers and Goats(或 Tigers and Sheep)的游戏制作基于树的 AI。我现在开始为树制作 classes,但我 运行 遇到一个错误,我的构造函数是相同的,尽管它们使用不同类型的列表。

这是我的两个构造函数:

public MoveTree(List<MoveTree> children, MoveTree parent)
{
    this.children = children;
    this.parent = parent;
}
public MoveTree(List<Move> moves, MoveTree parent)
{
    this.moves = moves;
    this.parent = parent;
}

我正在使用 intellij,它给我这里显示的错误

如何在仍然有两个构造函数的情况下避免此错误?我希望能够在不过多改变我的构造函数的情况下做到这一点,这样我就可以有不同的方法来实现这个 class 用于不同的目的

你不能两者兼得。使用 builder 模式(正式风格 - 此处未显示)或工厂方法(更简单 - 显示):

private MoveTree(MoveTree parent) {
    this.parent = parent;
}

public static MoveTree createWithMoveTree(List<MoveTree> children, MoveTree parent) {
    MoveTree moveTree = new MoveTree(parent);
    moveTree.children = children;
    return moveTree;
}

public static MoveTree createWithMoves(List<Move> moves, MoveTree parent) {
    MoveTree moveTree = new MoveTree(parent);
    moveTree.moves = moves;
    return moveTree;
}