java - 基于长整型值设置枚举集

标签 java enumeration

我有一个枚举,正在尝试从来自数据库的长值初始化。

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/

相关文章:

c# - Java 枚举类型的 C# 等效项是什么?引用下面的代码

java - ScrollView 在 android 中不完全滚动

跨类使用的 Java 枚举

enumeration - 在 Ada 中获取枚举类型的表示值

c++ - 如何在 C++ 中将自定义项添加到系统菜单?

arrays - 迭代数组并计数从负到正的变化(反之亦然)

Java 属性表

java - Ant 脚本从多个模块运行单元测试,如果测试失败则构建失败

java - 使用 Maven 构建 PMD jar

java - 如何在应用程序启动时将文本文件加载到 HashMap?