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

标签 java constructor

我在 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/

相关文章:

c++ - 给聚合一个转换构造函数?

具有多级继承的 C++ 构造函数

java - Windows 上的 NIO Files.createTempDirectory 导致异常

java - 依赖 jar 中的 Spring Lazy Init = true

java - 从某些站点的 html 页面中提取标题

c++ - 如何强制在派生类上实现特定数据类型的构造函数?

java - 设置不总是使用的 ArrayList 的初始容量的最佳实践是什么?

java - 更多的多任务 java 问题

java - getDeclaredMethods() 在 Java 7 和 Java 8 中的行为不同

C++为什么vector初始化会调用copy constructor