我有一个枚举,正在尝试从来自数据库的长值初始化。
public enum ArticlePermission {
NONE(0),
CAN_READ(2),
CAN_EDIT(4),
CAN_DELETE(8),
CAN_CREATE(16);
private long _value;
public ArticlePermission(int val) {
this._value = val;
}
public long getValue() {
return this._value;
}
public EnumSet<ArticlePermission> init(long val) {
EnumSet<ArticlePermission> es = EnumSet.of(ArticlePermission.NONE);
for(ArticlePermission p : values()) {
if(val & p.getValue() != 0) {
es.add(p);
}
}
return es;
}
}
我收到一个编译错误,指出 & 运算符不能用于长值。
那么我怎样才能正确地做到这一点?
最佳答案
或者,如果您确实想要进行按位比较,则只需要额外的括号:
if((val & getValue()) != 0) {
// do something
}
关于java - 基于长整型值设置枚举集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9057067/