对象.equals()
K-ballo 接受的答案没有任何问题。如果您喜欢一个简单的条件并且像我一样不喜欢 Yoda 条件,那么从 java 1.7 开始,答案是
if (Objects.equals(bool, true)) {
或者如果同时你更喜欢非常明确
if (Objects.equals(bool, Boolean.TRUE)) {
或者更好:避免这个问题
不建议使用Boolean
对象,从而首先允许Boolean
引用null
。像你看到的那样的风险NullPointerException
太大了。如果您需要一种三态逻辑,最好定义一个具有三个值的枚举。例如
enum MyTristateBoolean { FALSE, DONT_KNOW, TRUE }
现在我们根本不需要null
。中间常数可能应该命名为UNKNOWN
,或其他名称UNDEFINED
,NOT_EXISTING
具体取决于您的具体情况。NULL
如果合适的话,你甚至可以命名它。现在根据口味,您的比较成为以下两者之一。
if (myBool.equals(MyTristateBoolean.TRUE)) {
if (myBool == MyTristateBoolean.TRUE) {
后者有效,因为编译器保证每个枚举常量只有一个实例。正如你们大多数人所知==
,对于比较非枚举类型的对象是否相等是无效的。