У меня есть перечисление, которое я пытаюсь инициализировать из длинного значения, полученного из базы данных.
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;
}
}
Я получаю ошибку компиляции, в которой оператор & нельзя использовать для длинного значения.
Как я могу сделать это правильно?