所以我目前有两个枚举:
public enum AuthorizationLevel
{
FULL,
HALF,
NONE;
};
public enum DatabaseLoggingLevel
{
HIGH,
MED,
LOW,
AUTH_ONLY,
NONE
}
Run Code Online (Sandbox Code Playgroud)
我希望能够将整数与枚举中的值相关联,以便我可以拥有如下代码:
if(databaseLoggingLevel < ClassName.DatabaseLoggingLevel.HIGH) return;
Run Code Online (Sandbox Code Playgroud)
这只是为了在级别小于时禁用某些日志记录HIGH.我想过制作一个辅助函数,它返回一个与每个枚举值相关的整数值和一个switch语句,但这看起来很糟糕.有什么我想念的吗?
您可以在枚举中添加整数实例字段,并添加参数化构造函数:
enum AuthorizationLevel {
FULL(1), HALF(2), NONE(3);
private final int level;
private AuthorizationLevel(int level) {
this.level = level;
}
public int getLevel() {
return level;
}
};
Run Code Online (Sandbox Code Playgroud)
请注意,有一种ordinal()方法可以为您提供枚举常量的位置,但您应该避免使用它.再次引用Effective Java Item - 31(使用实例字段而不是序数):
如果常量被重新排序,则numberOfMusicians方法将中断.如果你想添加一个与你已经使用的int值相关联的第二个枚举常量,那你就不走运了.
此外,如果不为所有插入的int值添加常量,则无法为int值添加常量.例如,假设您要添加一个表示三重奏四重奏的常量,该四重奏由十二位音乐家组成.由11个音乐家组成的合奏没有标准术语,所以你不得不为未使用的int值添加一个虚拟常量(11).充其量,这很难看.如果许多int值未使用,则不切实际.
| 归档时间: |
|
| 查看次数: |
1519 次 |
| 最近记录: |