在Java中,我如何创建一个属性/字段/变量,它可以在任何时候存储几个选项/值,类似于较低级别的环境,您可以在其中设置变量中的位,每个都意味着不同的东西。我知道人们可以通过使用静态韵母或其他东西在Java中做到这一点,然后将它们全部OR化,但是不是更优雅的解决方案吗?例如,在C#中,您可以将[Flags]属性赋予Enum,然后将状态/值一起OR到该枚举的实例中。
有什么想法吗?
雷诺
答案 0 :(得分:7)
好吧,您可以使用枚举,然后为该枚举设置EnumSet
。没有更多信息,很难确切知道要推荐什么。当你自然地处理“选项”时,EnumSet
是一个不错的选择 - 但是如果你有多个值(例如高度和宽度;固定数量的值,它们自然地汇集在一起)然后我只是创建一个新类型来封装它们。
如果您能够提供您正在寻找的具体示例,我们可能会提供更多帮助。
答案 1 :(得分:1)
老式的方法(你仍然可以在许多库中找到)将使用int值或BitSet对位掩码进行编码,但是从JDK 1.5开始,EnumSet是首选的方法。这样做,as Jon Skeet says。
答案 2 :(得分:0)
你的意思是像C ++联盟?这在Java中是不允许的,因为你失去了类型安全性;例如,这样您就可以引用Integer
作为String
输入的内容。