Java 按位和运算符多重权限

Pre*_*arR 0 java bitwise-operators

我正在开发一个 java web 应用程序,在一个数据库表中,我有一列类型为 number。但该列用于存储多个值。(即许可如下)

  1. 没有 = 1;
  2. 视图 = 2;
  3. 添加 = 4;
  4. 编辑 = 8;
  5. 插入 = 16;
  6. 删除 = 32;
  7. 全部 = 64;

问题

  1. 如果该列的值为 3 --> 那么我不需要选择任何内容,查看权限。
  2. 如果该列的值为 12 --> 那么我需要选择添加、编辑。

像这样的东西

我不明白我们可以通过按位运算符来做到这一点。任何实现这一点的代码都会很棒。

spe*_*izt 5

我认为您的意思是按位运算和二进制文字。

在您的情况下,您将不得不使用位掩码(固定版本,谢谢@Paul Boddington 和@Jaroslaw Pawlak):

final int MASK_NOTHING = 1;
final int MASK_VIEW = 0b10;
final int MASK_ADD = 0b100;
final int MASK_EDIT = 0b1000;
final int MASK_INSERT = 0b10000;
final int MASK_DELETE = 0b100000;
final int MASK_ALL = 0b1000000;
int column = 0; //YOUR DATA HERE

if((column & MASK_NOTHING) > 0)
{

}

if((column & MASK_VIEW) > 0)
{

}
Run Code Online (Sandbox Code Playgroud)

请注意:所有可能的位标志都可以独立设置......所以要么避免一次设置多个,要么处理所有这些情况

二进制文字:https : //docs.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html运营商:https : //docs.oracle.com/javase/tutorial/java/nutsandbolts/ op3.html