我正在开发一个java web应用程序,在数据库表中我有一个数字类型的列。但该列用于存储多个值。 (即如下所示的权限)
- 什么都没有 = 1;
- 查看 = 2;
- 添加 = 4;
- 编辑 = 8;
- 插入 = 16;
- 删除=32;
- 全部 = 64;
问题
- 如果该列的值为 3 --> 那么我不需要选择任何内容,查看为 许可。
- 如果该列的值为 12 --> 那么我需要选择 add , 编辑。
类似这样的事情
我明白我们可以通过按位运算符来做到这一点。任何实现此目的的代码都很棒。
最佳答案
我认为你的意思是按位运算和二进制文字。
在您的情况下,您必须使用位掩码(固定版本,谢谢@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)
{
}
请注意:所有可能的位标志都可以独立设置...因此要么防止一次设置多个位标志,要么处理所有这些情况
二进制文字:https://docs.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html接线员:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html
关于Java按位&运算符多重权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33543988/