首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >定义true、false、unset状态的最佳方法

定义true、false、unset状态的最佳方法
EN

Stack Overflow用户
提问于 2008-11-24 17:11:18
回答 8查看 37.9K关注 0票数 27

如果您需要知道在何处没有设置布尔值(例如,如果未设置值应该从父值继承),Java布尔原语(以及其他语言中的等价物)显然是不够的。

实现这一目标的最佳实践是什么?定义一个能够表达所有三种状态的新的简单类,或者使用Java Boolean类并使用null来指示未设置的状态?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-11-24 17:13:12

代码语言:javascript
复制
Boolean a = true;
Boolean b = false;
Boolean c = null;

我会用这句话。这是最直接的。

另一种方法是使用枚举。也许这更好更快,因为不需要装箱:

代码语言:javascript
复制
public enum ThreeState {
    TRUE,
    FALSE,
    TRALSE
};

第一种方法的优点是你的类的用户不需要关心你的三态布尔值。他们仍然可以通过truefalse。如果你不喜欢这个null,因为它在这里很少说明它的意义,你仍然可以在你的类中创建一个public static final Boolean tralse = null;

票数 51
EN

Stack Overflow用户

发布于 2008-11-24 17:13:21

虽然不是特定于Java语言的,但我自己在这个场景中的首选是定义一个ThreeState类或枚举并使用它--正如您所提到的,True、False和Undefined (或者默认值,或者Unset,正如您的领域特定的术语所规定的那样)。与用null表示未设置/未定义相比,它感觉更好,更自然,更自我记录。

票数 10
EN

Stack Overflow用户

发布于 2008-11-24 17:16:17

@Nullable Boolean得到了我的支持。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/314800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档