具有许多参数的枚举

时间:2015-01-19 20:50:17

标签: java parameters enums dry builder

什么是避免Enum中长参数列表的最佳方法?是否有Enum等效的构建器模式?我试图避免不得不切换Enum值,因为这会违反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...
}

1 个答案:

答案 0 :(得分:1)

你可以做到

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

    private ExampleEnum(InitParams params) {
        ...
    }

    private static class InitParams {
        ...
    }
}

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