public class Permission {
// 是否允许查询,二进制第1位,0表示否,1表示是
public static final int ALLOW_SELECT = 1 << 0; // 0001
// 是否允许新增,二进制第2位,0表示否,1表示是
public static final int ALLOW_INSERT = 1 << 1; // 0010
// 是否允许修改,二进制第3位,0表示否,1表示是
public static final int ALLOW_UPDATE = 1 << 2; // 0100
// 是否允许删除,二进制第4位,0表示否,1表示是
public static final int ALLOW_DELETE = 1 << 3; // 1000
// 存储目前的权限状态
private int flag;
// 设置用户的权限
public void setPer(int per){
flag = per;
}
// 增加用户的权限(1个或者多个)
public void enable(int per){
flag = flag|per;
}
// 删除用户的权限(1个或者多个)
public void disable(int per){
flag = flag&~per;
}
// 判断用户的权限
public boolean isAllow(int per){
return ((flag&per) == per);
}
// 判断用户没有的权限
public boolean isNotAllow(int per){
return ((flag&per) == 0);
}
public static void main(String[] args) {
int flag=15;
Permission permission=new Permission();
permission.setPer(flag);
permission.disable(ALLOW_DELETE|ALLOW_INSERT);
System.out.println("select = "+permission.isAllow(ALLOW_SELECT));
System.out.println("update = "+permission.isAllow(ALLOW_INSERT));
System.out.println("insert = "+permission.isAllow(ALLOW_INSERT));
System.out.println("delete = "+permission.isAllow(ALLOW_DELETE));
}
}
位运算实现权限管理
最新推荐文章于 2024-04-06 19:44:03 发布
本文介绍了一种使用二进制位操作来管理用户权限的方法,通过定义四个基本权限(查询、新增、修改、删除),并利用位运算符进行权限的设置、增加、删除及判断,实现了高效灵活的权限管理系统。
1180

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



