您的位置:首页 > 编程语言 > Java开发

java开发小技巧—二进制进阶—状态位

2017-06-15 14:34 232 查看
/**

 * 事物同时具有多种状态工具

 * 二进制,每一位代表一种状态,0或1,采用&,|,^ 计算

 */

public class StateUtils {

    public final static long USER_START_STATE=1;//初始状态

    public final static long USER_BASE_INFO_STATE=2<<1;//填写基本信息

    public final static long USER_PHONE_STATE=2<<2;//绑定手机号

    //.....

    

    

    //与:同为1则1

    //是否具有某种状态,states:原有状态,   value:要判断状态

    public static boolean hasState(long states,long value){

        return (states & value)!=0;

    }

    //或,有1则1

    //添加状态,states:原有的状态, value:要添加的状态

    public static long addState(long states,long value){

        if(hasState(states,value)){

            return states;

        }

        return states | value;

    }

    //异或,相同为0,不同为1

    //移除状态,states:原有的状态, value:要移除的状态

    public static long removeState(long states,long value){

        if(!hasState(states,value)){

            return states;

        }

        return states ^ value;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: