如何替换旧标志&;Java中枚举的常量按位操作?

如何替换旧标志&;Java中枚举的常量按位操作?,java,enums,bitwise-operators,flags,Java,Enums,Bitwise Operators,Flags,您好 我在C++中使用了一个遗留代码,它使用标志,然后根据读取的内容更新标志的状态: 主文件: #define VINCULACION 0x00000004L #define DET_VINCULACION 0x00000008L long unsigned FlagRead ; int formerMethod(){ if ((FlagRead & VINCULACION)==0) ReadVinculacion(); //.

您好

<>我在C++中使用了一个遗留代码,它使用标志,然后根据读取的内容更新标志的状态:

主文件:

#define VINCULACION                 0x00000004L
#define DET_VINCULACION             0x00000008L

long unsigned FlagRead ;

int formerMethod(){
if ((FlagRead & VINCULACION)==0) ReadVinculacion();
//... DO MORE
}

int ReadVinculacion(){
//.. Do DB operations to read Vinculacion variables.
FlagRead|=VINCULACION;
  return 1;
}

//.. Same similar methods to ensure reading DET_VINCULACION but not doing it twice.
现在在Java开发中,我不使用带有整数或long的常量作为使用枚举的良好实践

在java下使用枚举是否有一种性能明智且可靠的方法来完成相同的任务

谢谢

> P> >使用AN代替C++代码>代码>变量>: 枚举集在内部表示为位向量。这种表示非常紧凑和高效。这个类的空间和时间性能应该足够好,可以作为传统的基于int的“位标志”的高质量、类型安全的替代品

您可以通过使用<代码> SET.Engin(YouNeU.So.St值)

< P>检查是否执行某些操作:查看在C++代码中使用AN代替<代码> FLAGADAD< /COD>变量: 枚举集在内部表示为位向量。这种表示非常紧凑和高效。这个类的空间和时间性能应该足够好,可以作为传统的基于int的“位标志”的高质量、类型安全的替代品

然后,您可以使用
set.contains(YourEnum.SOME_值)
来测试是否应该执行某些操作

我根据建议创建了一个枚举文件:Constants.java

public enum Constantes {

  VINCULACION,

  DET_VINCULACION;
}
然后在Main.java上:

private final EnumSet<Constantes> flagRead;

public boolean needsToRead(Constantes constantParameter) {
    return (flagRead.contains(constantParameter)  == false);
  }

public void markAsRead(Constantes constantParameter){
    flagRead.add(constantParameter);
  }
我做了基本的单元测试和运行测试,它模拟了所需的过程

谢谢

您好

我根据建议创建了一个枚举文件:Constants.java

public enum Constantes {

  VINCULACION,

  DET_VINCULACION;
}
然后在Main.java上:

private final EnumSet<Constantes> flagRead;

public boolean needsToRead(Constantes constantParameter) {
    return (flagRead.contains(constantParameter)  == false);
  }

public void markAsRead(Constantes constantParameter){
    flagRead.add(constantParameter);
  }
我做了基本的单元测试和运行测试,它模拟了所需的过程

谢谢