java多个枚举写在一个文件_将多个列表枚举值写入另一个枚举

理解这个问题的答案需要更深入地了解枚举类的[Flags]属性 . 您可以阅读有关此属性的信息(或阅读有关如何使用它的一些指导原则)here at MSDN

“Flags”属性是C世界的遗留物,你没有C#和CLR给你的所有花哨类型 .

例如,你可能有一个C程序需要跟踪一堆不同的正交条件(我们称之为Condition0,Condition1,Condition2等......)但是为了节省空间,或者为了更容易通过这些条件作为一个单元,我们希望将它们全部塞入一个8位(或更大)值 . 那么你要做的是定义以下条件:

位0跟踪Condition0的状态

位1跟踪Condition1的状态

位2跟踪Condition2的状态

如果你还记得你的二进制到十进制转换,你就会知道 - 位0表示十进制值1 - 位1表示十进制值2 - 位2表示十进制值4 - 位4表示十进制值8位 - n表示n的幂的小数值2

因此,我们可以将这两个列表结合起来,看看:

Condition0的值为1(4位二进制为0b0001)

Condition1的值为2(4位二进制为0b0010)

Condition2的值为4(4位二进制为0b0100)

等 . .

如果我们需要表示发生了Condition1和Condition2,那么这意味着设置了位1和位2 . 在二进制中,它是0b0110,在十进制中是“6” . 表示Condition1和Condition2的值只是Condition1和Condition2的逻辑OR . 0b0010或0b0110是0b0110 . 2或4是6 .

现在,您可能已经注意到逻辑OR以及Condition1和Condition2的总和在上面的示例中出

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值