如果您需要知道在何处没有设置布尔值(例如,如果未设置值应该从父值继承),Java布尔原语(以及其他语言中的等价物)显然是不够的。
实现这一目标的最佳实践是什么?定义一个能够表达所有三种状态的新的简单类,或者使用Java Boolean类并使用null来指示未设置的状态?
发布于 2008-11-24 17:13:12
Boolean a = true;
Boolean b = false;
Boolean c = null;
我会用这句话。这是最直接的。
另一种方法是使用枚举。也许这更好更快,因为不需要装箱:
public enum ThreeState {
TRUE,
FALSE,
TRALSE
};
第一种方法的优点是你的类的用户不需要关心你的三态布尔值。他们仍然可以通过true
和false
。如果你不喜欢这个null
,因为它在这里很少说明它的意义,你仍然可以在你的类中创建一个public static final Boolean tralse = null;
。
发布于 2008-11-24 17:13:21
虽然不是特定于Java语言的,但我自己在这个场景中的首选是定义一个ThreeState类或枚举并使用它--正如您所提到的,True、False和Undefined (或者默认值,或者Unset,正如您的领域特定的术语所规定的那样)。与用null
表示未设置/未定义相比,它感觉更好,更自然,更自我记录。
发布于 2008-11-24 17:16:17
@Nullable Boolean
得到了我的支持。
https://stackoverflow.com/questions/314800
复制相似问题