package mypacket;
public class Stage{
static int stages = 0;
/**
* 设置状态
* @param stage
*/
private static void setStage(int stage){
stages |= stage;
}
/**
* 判断状态是否存在
* @param stage
* @return
*/
private static boolean isStage(int stage){
return (stages & stage) != 0;
}
/**
* 清除状态
* @param stage
*/
private static void clearStage(int stage){
stages = (stages | stage) ^ stage;
}
public static void main(String[] args) {
int stage0 = 1;
int stage1 = 1 << 1;
System.out.println("before set stage: stage0 is " + (isStage(stage0)? "" :"not ") + "in the result.");
System.out.println("before set stage: stage1 is " + (isStage(stage1)? "" :"not ") + "in the result.");
setStage(stage0);
setStage(stage1);
System.out.println("after set stage: stage0 is " + (isStage(stage0)? "" :"not ") + "in the result.");
System.out.println("after set stage: stage1 is " + (isStage(stage1)? "" :"not ") + "in the result.");
clearStage(stage0);
System.out.println("after clear stage :stage0 is " + (isStage(stage0)? "" :"not ") + "in the result.");
}
}
这样就可以把多个状态保存在stages这个变量里面了,在实际开发过程中,建议将各个状态以枚举类型存在,在上面的设置,删除和判断的方法里传入的参数也改成枚举类型,防止出错。