java - 具有许多参数的枚举

标签 java parameters enums dry builder

避免枚举中出现长参数列表的最佳方法是什么?是否存在与构建器模式等效的枚举?我试图避免切换枚举值,因为这会违反 DRY 原则。

正如您在下面看到的,跟踪多个参数可能很困难:

public enum ExmapleEnum {
    FOO(20, 75, 100),
    BAR(41, 6, 240),
    BAZ(2, 19, 80);

    private int mAge;
    private int mHeight;
    private int mWeight;

    private ExmapleEnum(int age, int height, int weight) {
        mAge = age;
        mHeight = height;
        mWeight = weight;
    }

    // Remainder omitted...
}

最佳答案

你可以做

public enum ExampleEnum {
    FOO(InitParams.builder()
                  .setAge(20)
                  .build()),
    ...

    private ExampleEnum(InitParams params) {
        ...
    }

    private static class InitParams {
        ...
    }
}

然后,您可以根据构建的 InitParams 填充字段,也可以将 InitParams 对象存储为字段。

关于java - 具有许多参数的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28033244/

相关文章:

java - 如何从用户输入错误的地方重复输入?

java - ElasticSearch 日期映射

java - 在方法参数中设置数组项

windows-phone-7 - 如何在按钮中传递参数并在后面的代码中获取值以根据Windows Phone 7中参数的值重定向到另一个页面?

javascript - Jquery/javascript函数问题

c++ - 如何实现从枚举值到类模板的隐式转换

MySQL 错误 1265 枚举数据被截断

java - "Unresolved compilation problem"是什么意思?

java - 异常流控在某些场景下是不是更好?

java - 在 O(n) 时间内查找排序链表中的重复项