使用具有多个参数的Java枚举

时间:2014-08-18 19:34:00

标签: java enums

我正在使用下面代码段中的枚举,这对我很有帮助。但是,当我想定义多个具有相同参数的ENUM(例如ENUM2,ENUM3)时,我必须在代码段中编写标记为“重复代码”的所有内容。

我正在考虑将所有参数(p1,...)封装在一个对象中,只是为了在枚举中提供对该对象的引用。但是,这个想法会让我感到不安,因为会生成其他额外的实例。

上述方法是对的,还是如何解决这个问题?

public enum ENUM1 {
    KEY_1(p1, p2, ..., pn),
    ...
    KEY_M(p1, p2, ..., pn);

    // constructor

    // REPEATED CODE
    private int p1, p2, ..., pn;
    public getP1();
    ...
    public getPM();
}

1 个答案:

答案 0 :(得分:2)

试试这个:

public enum ENUM1 {

    KEY_1(Arrays.asList(1, 2, 3)),
    KEY_2(Arrays.asList(4, 5, 6));

    ENUM1(List<Integer> ps) {
        params = Collections.unmodifiableList(ps);
    }

    private List<Integer> params;

    public int getP(int idx) {
        return params.get(idx);
    }

}

鉴于您有多个相同类型的参数,您可以使用集合。稍后,当您需要使用getP()方法检索特定参数时,请记住索引是从0开始的。