Java中“Boolean.TRUE.equals(x)”有什么理由吗?

2022-09-01 11:37:17

我在我正在处理的一个项目中遇到了此代码

(这是在Java中)

if (Boolean.TRUE.equals(foo.isBar()))

Foo#isBar() 被定义为 ,因此它不能返回boolean isBar()null

真的有什么理由应该这样写吗?我自己只会写

if (foo.isBar())

,但也许我错过了一些微妙的东西。

谢谢


答案 1

我希望返回一个布尔值。在这种情况下,您可以随时编写 .如果返回,则它可以是 、 或 。在这种情况下,请确保在一个场景(TRUE)中执行if块,并在其余2中省略。foo.isBar()if (foo.isBar())foo.isBar()BooleanBoolean.TRUEBoolean.FALSENULLif (Boolean.TRUE.equals(foo.isBar()))

返回布尔 NULL 时,上述操作将失败if (foo.isBar())foo.isBar()


答案 2

由于返回一个原语,所以没有语义上的区别。此外,第二种方法更简洁,更清晰,更有效,因为结果不必为调用进行置入,然后再次提取原始布尔值。鉴于所有这些,没有理由使用第一种方法,并且有几个使用第二种方法,因此使用第二种方法。我给其他程序员很大的回旋余地,但我会坐下来和任何在专业代码中添加类似内容的人聊天。isBarboolean