二进制权限

来源:互联网 发布:king of the hill知乎 编辑:程序博客网 时间:2024/05/15 09:35
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