作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问候,
我来到了 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 进行开发,我没有将常量与整数或长整型一起用作使用枚举的良好做法。
是否有一种性能明智且可靠的方法可以在 java 下使用枚举来完成相同的任务?
谢谢!
最佳答案
看看使用 EnumSet
取代 C++ 代码中的 FlagRead
变量:
Enum sets are represented internally as bit vectors. This representation is extremely compact and efficient. The space and time performance of this class should be good enough to allow its use as a high-quality, typesafe alternative to traditional int-based "bit flags."
然后您可以使用 set.contains(YourEnum.SOME_VALUE)
关于java - 如何用 Java 中的枚举替换旧版标志和常量按位运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784157/
我是一名优秀的程序员,十分优秀!