package test;
/**
* 二进制权限使用
*
* 权限: 0 表示所有权限 1 新增 0001 2 修改 0010 4 删除 0100 8 查看 1000
*
* 如 10(十进制的 10 不是二进制的 1) 代表的权限是 修改和查看权限
*
*/
public class BitPermission {
// 初始化 0000
private static int init = 0;
// 新增 0001
private static int p_insert = 1;
// 修改 0010方
private static int p_update = 2;
// 删除 0100
private static int p_delete = 4;
// 查看 1000
private static int p_view = 8;
public static void main(String[] args) {
// 添加 view 权限
int view = addRight(init, p_view);
// 添加 view insert 权限
int viewAndInsert = addRight(view, p_insert);
// 添加 view insert update 权限
int viewAndInsertAndUpdate = addRight(viewAndInsert, p_update);
// 添加 view insert update delete 权限
int viewAndInsertAndUpdateAndDelete = addRight(viewAndInsertAndUpdate, p_delete);
// 测试是不是拥有权限
System.out.println("是否拥有 view 权限:" + hasRight(viewAndInsertAndUpdateAndDelete, p_view));
System.out.println("是否拥有 insert 权限:" + hasRight(viewAndInsertAndUpdateAndDelete, p_insert));
System.out.println("是否拥有 update 权限:" + hasRight(viewAndInsertAndUpdateAndDelete, p_update));
System.out.println("是否拥有 delete 权限:" + hasRight(viewAndInsertAndUpdateAndDelete, p_delete));
}
/**
* 是否含有权限
*
* @param source
* @param target
* @return
*/
public static boolean hasRight(int source, int target) {
return (source & target) == target;
}
/**
* 是否完全想等
*
* @param source
* @param target
* @return
*/
public static boolean isEqual(int source, int target) {
return source == target;
}
/**
* 添加权限
*
* @param source
* @param target
* @return
*/
public static int addRight(int source, int target) {
return source | target;
}
/**
* 移除权限
*
* @param source
* @param target
* @return
*/
public static int removeRight(int source, int target) {
return source & ~target;
}
}
二进制权限
最新推荐文章于 2019-11-13 18:30:43 发布