为了论证,我们假设所有这些值都是唯一的,不能用范围定义(小于x,但大于y)。
例如,如果我必须代表一个变量,它的值可以是苹果,也可以是香蕉。我可以使用布尔值表示此变量,并假设true表示apple,false表示整个程序中的香蕉。但是,如果该变量可以占用三个值,例如苹果,香蕉和橙子呢?
一种解决方案是将它包装在bean类中,使其成为私有,然后编写一个方法,只允许您设置一个值,如果它是这些'n'值之一,实际上是添加一个检查。
另一种解决方案是制作枚举类型。
但还有什么?
答案 0 :(得分:1)
绝对不要使用布尔来表示这样的内容。
布隆是为了逻辑价值观;代表 true 和 false 。没有其他的。一旦进入 true 意味着 Apple 和 false 意味着 Banana 业务,您就进入了每个和任何需要处理“水果”的代码都需要理解从布尔到Apple / Banana的这种(任意)映射。针对此类问题的Java或C ++等语言的正确解决方案:enums。确保编译器理解此类型的“对象”的有效值;而不是发明自己的映射!
答案 1 :(得分:0)
如果按照您的建议,您可以使用boolean
代表两个选项,在这种情况下,您知道特定值代表特定对象,在您的情况下是水果(但无法检查它是否为指定范围之一),那么short
表示3个或更多,或者byte
怎么样?即使char[]
或string
也足够了。
但是,如果您需要检查功能,则需要enum
或class
。
但是,您可以使用包含struct
(或short
),数组,哈希表或其他列表的byte
查找机制,其中包含short
可以采用的可能[合法]值,然后在其余代码中散布,您编写访问权限,为short
分配值仅对应于String数组中保存的值。
但是,后一个选项显然与一个类相同,但其方法是 external 。毕竟,类的简单定义是一个包含自己的方法的结构。