当前位置: 首页 > 知识库问答 >
问题:

我怎么能同时拥有这两个构造函数呢?

范鸿畅
2023-03-14

我正在为一款源自尼泊尔的游戏制作一个基于树的人工智能,名为老虎和山羊(或老虎和绵羊)。我现在开始为树创建类,但是我遇到了一个错误,我的构造函数是相同的,尽管它们使用不同类型的列表。

这是我的两个构造函数:

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;
}

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

共有1个答案

燕智
2023-03-14

你不能两者兼得。使用构建器模式(正式样式-此处未显示)或工厂方法(更容易显示):

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;
}
 类似资料:
  • 我的问题是关于OOP(C)中的构造函数。当我在一个类中将默认构造函数定义为private,并且在main中将该类的一个对象初始化为default时,就会出现默认构造函数不可访问的错误。这很好。但我也在Public部分中使用默认参数构造函数,当我再次在main中初始化对象时,就会出现对函数重载的不明确调用。所以我的问题是,如果不能从main访问私有构造函数,那么编译器应该调用公共部分中的构造函数,这

  • Spring文档说: 每个类只能标记一个带注释的构造函数,但是可以注释多个非必需的构造函数。在这种情况下,每个都被认为是候选的,Spring使用最贪婪的构造函数,其依赖关系可以得到满足——也就是说,具有最多参数的构造函数。构造函数解析算法与具有重载构造函数的非注释类相同,只是将候选对象缩小为注释构造函数。 我测试了它,当我有另一个由 错误: 组织。springframework。豆。工厂BeanC

  • 请问这样的构造函数如何实现?

  • 我想使它从“游戏26”类到“游戏39”类,如果用户经历了从“游戏17”类到“游戏18”类。但如果用户没有通过,要使从“Game26”类到“Game30”类。

  • 我要“登录” 而我愿意这样 我也使用Bootstrap4,但不是为了我想做的事情,我在某个地方读到,不使用Bootstrap,自己做更好。 下面是我使用的代码: css: html: 如果可以使用Bootstrap 4完成,我也可以。