位运算的运用-权限控制:add,query,modify,del
public class Permission {
private static final int ALLOW_SELECT = 1<<0;//0001
private static final int ALLOW_INSERT = 1<<1;//0010
private static final int ALLOW_UPDATE = 1<<2;//0100
private static final int ALLOW_DELETE = 1<<3;//1000
//当前的权限状态
private int flag;
public void setPermission(int permission){
flag = permission;
}
/*增加权限,可以一项或者多项*/
public void addPermission(int permission){
flag = flag|permission;
}
/*删除权限,可以一项或者多项*/
public void disablePermission(int permission){
flag = flag&~permission;
}
/*是否拥有某些权限*/
public boolean isAllowed(int permission){
return (flag&permission)==permission;
}
/*是否不拥有某些权限*/
public boolean isNotAllowed(int permission){
return (flag&permission)==0;
}
public static void main(String[] args) {
int flag = 15;//1111
Permission permission = new Permission();
permission.setPermission(flag);
permission.disablePermission(ALLOW_DELETE|ALLOW_INSERT);
System.out.println("ALLOW_SELECT="+permission.isAllowed(ALLOW_SELECT));
System.out.println("ALLOW_INSERT="+permission.isAllowed(ALLOW_INSERT));
System.out.println("ALLOW_UPDATE="+permission.isAllowed(ALLOW_UPDATE));
System.out.println("ALLOW_DELETE="+permission.isAllowed(ALLOW_DELETE));
}
}
结果:
ALLOW_SELECT=true
ALLOW_INSERT=false
ALLOW_UPDATE=true
ALLOW_DELETE=false
jdk里的NIO里的OP_WRITE、OP_READ等也是用的这种思想。
本文介绍了一种使用位运算进行权限控制的方法,通过定义不同的位表示不同的操作权限(如查询、插入、更新和删除),并通过位运算实现权限的添加、删除和检查。示例代码展示了如何设置和修改权限,以及如何检查特定权限是否存在。
842

被折叠的 条评论
为什么被折叠?



