我正在使用下面代码段中的枚举,这对我很有帮助。但是,当我想定义多个具有相同参数的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();
}
答案 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开始的。