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

Mor*_*roy 2 java constructor

我在Java中定义了一个对象 - 就Java而言,它们是相同的,但就填充它们的数据而言,它们可以是三种类型之一(命名为1,2, 3为0表示"root").
我真正希望能够做的是定义了四个构造函数,因为它们需要每种类型略有不同的参数.我可以用战略空值做到这一点,但这似乎是错误的做法.我喜欢的是:

public MenuNode(int type = 1, param1, param2, param3) {
    doStuffHere();
} 
public MenuNode(int type = 2, paramX, paramY) {
    doStuffHere();
}
Run Code Online (Sandbox Code Playgroud)

然后调用以下内容:

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

}
Run Code Online (Sandbox Code Playgroud)

等等

我希望这有点道理 - 它有点像那里,谷歌搜索只提到公共静态空白等等.如果有人比我更有经验/知识的Java可以看看,永恒的爱并将表达感激之情.

Adr*_*Cox 5

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

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;
    }
Run Code Online (Sandbox Code Playgroud)