(Java)
想要用一个值去维护多个状态的开闭,去查了一下前人的代码,发现使用位操作实现的,仔细一想,二进制本身不就是多个位置的开闭嘛,真是妙啊。
比如需要维护三种状态
1.首先定义三个常量
int FLAG1 = 0x01;
int FLAG2 = 0x02;
int FLAG3 = 0x04;
2.维护时使用位操作
打开一个开关调用此方法,传参时使用上面的三个常量
int flag;
void addFlag(int add) {
flag |= add;
}
关闭一个开关,同上
void removeFlag(int remove) {
flag &= ~remove;
}
关闭所有开关,直接赋0就可以了
void clearFlag() {
flag = 0;
}
返回指定开关的状态,参数也是那三个常量
boolean testFlag(int test) {
return (flag & test) > 0;
}
方法都很简单,只是以前没想到,先记下喽。