如何替换旧标志&;Java中枚举的常量按位操作?
您好 <>我在C++中使用了一个遗留代码,它使用标志,然后根据读取的内容更新标志的状态: 主文件:如何替换旧标志&;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(); //.
#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);
}
我做了基本的单元测试和运行测试,它模拟了所需的过程
谢谢