二进制权限

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;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值