如何在eclipse 3.7中禁用枚举中的值排序?我依赖于枚举条目的顺序,因此每次我点击排序时都会折断我的脖子。
enum X {C,B,A}
在击中排序成员后变成enum X {A,B,C}
。
Windows>首选项> Java>编辑器>保存操作>其他操作>配置>成员>对成员排序>选择“忽略字段和枚举常量“
或
窗口>首选项> Java>代码样式>清理>编辑>代码组织>成员>对成员排序>选择“忽略字段和枚举常量”]
但是您实际上不应该根据枚举的声明顺序进行编码。这是完全错误的。
停止依赖于枚举条目的顺序。这将导致比您要处理的错误更多的错误。
通过编码取决于枚举的顺序,您隐式调用了枚举类的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;
}
}
我不认为依赖于位置相关的代码是一个好主意。由于Enums
可以被视为Java中的类,为什么不定义特定的ID?
enum Enum
{
A(0),
B(1),
C(2);
public final int id;
Enum(int id) { this.id = id; };
}
这会更安全。
我使用异常来检测是否无意中更改了枚举的顺序:
enum Enum
{
A(0),
B(1),
C(2);
private Enum(int ordinal)
{
if (this.ordinal() != ordinal)
{
throw new BadEnumerationException(ordinal);
}
}
}