gpt4 book ai didi

java - Java 构造函数中有固定参数 - 可能吗?

转载 作者:行者123 更新时间:2023-12-02 05:55:33 26 4
gpt4 key购买 nike

我在 Java 中定义了一个对象 - 就 Java 而言,它们是同一件事,但就填充它们的数据而言,它们可以是三种类型之一(通俗地命名为 1 ,2,3,其中 0 表示“根”)。
我真正想做的是定义四个构造函数,因为每种类型它们需要稍微不同的参数。我可以用策略无效来做到这一点,但这似乎是错误的做法。我想要的是这样的:

public MenuNode(int type = 1, param1, param2, param3) {
doStuffHere();
}
public MenuNode(int type = 2, paramX, paramY) {
doStuffHere();
}

然后调用以下内容:

switch (toQueue.itemType) {

when ITEM_TYPE_STATIC {
MenuNode mn1 = new MenuNode(ITEM_TYPE_STATIC, param1, param2, param3);
}

when ITEM_TYPE_DYNAMIC {
MenuNode mn2 = new MenuNode(ITEM_TYPE_DYNAMIC, paramX, paramY);
}

}

等等等等

我希望这有某种意义 - 它有点离谱,谷歌搜索只能找到对 public static void 等的引用。如果比我更懂 Java 的人能看一看,永恒的爱和感激就会随之而来。

最佳答案

另一种方法是避免在此处使用构造函数,并创建一个调用私有(private)构造函数的静态工厂方法:

class MenuNode {
private MenuNode() {
// Does nothing important
}
public static MenuNode createStatic(param1, param2, param3) {
MenuNode result = new MenuNode();
result.setItemType(ITEM_TYPE_STATIC);
result.setParam1(param1);
result.setParam2(param2);
result.setParam3(param3);
result.doStuffHere();
return result;
}
public static MenuNode createDynamic(paramX, paramY) {
MenuNode result = new MenuNode();
result.setItemType(ITEM_TYPE_DYNAMIC);
result.setParamX(paramX);
result.setParamY(paramY);
result.doStuffHere();
return result;
}

关于java - Java 构造函数中有固定参数 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5634575/

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