如何在eclipse 3.7中的枚举中禁用排序值?我依赖于enum条目的顺序,所以每当我点击排序时这都会打断我的脖子。
在点击排序成员后, enum X {C,B,A}
变为enum X {A,B,C}
。
答案 0 :(得分:5)
Windows>偏好> Java>编辑>保存操作>额外 行动>配置>会员>对会员排序>选择“忽略字段 和Enum常数“
或
窗口>偏好> Java>代码风格>清理>编辑>代码组织>会员>对会员排序>选择“忽略字段和枚举常量”
但是你真的不应该根据枚举声明的顺序进行编码。这完全是错的。
答案 1 :(得分:3)
停止依赖枚举条目的排序。这将导致比你想要处理的更多错误。
通过编码依赖于枚举的顺序,您隐式调用枚举类的ordinal()
函数(返回一个int)。这有以下缺点:
ordinal()
返回值。相反,展开你的枚举以正确包含一个值,如下所示:
public enum Departments {
SALES(101),
ACCOUNTING(200),
MANAGEMENT(300);
private final int deptNumber;
Departments(int number) {
deptNumber = number;
}
public int departmentNumber() {
return deptNumber;
}
}
答案 2 :(得分:2)
我不认为依赖位置相关代码是一个好主意。由于Enums
可以被认为是Java中的类,为什么不定义您的特定ID?
enum Enum
{
A(0),
B(1),
C(2);
public final int id;
Enum(int id) { this.id = id; };
}
这会更加安全。
答案 3 :(得分:0)
我使用异常来检测是否无意更改了枚举的顺序:
enum Enum
{
A(0),
B(1),
C(2);
private Enum(int ordinal)
{
if (this.ordinal() != ordinal)
{
throw new BadEnumerationException(ordinal);
}
}
}