java 类c#位域进行类型判断

//避免数据库对同一事物的状态或种类等具有相同类型不同属性的进行多字段控制或表述。例如:性别->男,女;账号权限->增,删,改,查中其中一种或者多种权限。

public static void main(String[] args) {

for(int i = 0;i<129;i++){

//测试
            System.out.println(findFlags(i));
        }

}

      public  enum WeekDays
            {
                Monday(1),//1            ---0000001
                Tuesday(1<<1),//2            ---0000010
                Wednesday(1<<2),//4    ---0000100
                Thursday(1<<3),//8        ---0001000
                Friday(1<<4),//16        ---0010000
                Saturday(1<<5),//32    ---0100000
                Sunday(1<<6);//64        ---1000000
                private final int value;

                // 构造器默认也只能是private, 从而保证构造函数只能在内部使用
              WeekDays(int value) {
                    this.value = value;
                }
            }

public static String findFlags(int value) {
            if(value < 0){
                return String.valueOf(value);
            }
               String tempStr = "";
               for (WeekDays wd : WeekDays.values()) {
                   if((wd.value & value) == wd.value){
                       tempStr += wd + ",";
                   }
            }
              tempStr =  tempStr.equals("") ? String.valueOf(value) : tempStr.substring(0, tempStr.length()-1);
              return tempStr;
}

   int mFlags = 1<<6;//当前flag

//增加flag
    public void addFlags(int flags) {
        mFlags |= flags;
    }

   //删除flag
    public void clearFlags(int flags) {
        mFlags &= ~flags;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值