我一直在读罗伯特·奈斯特罗姆的书《100》,我读到了下面的代码:

if (!scopes.isEmpty() && scopes.peek().get(expr.name.lexeme) == Boolean.FALSE) { // <- Focus here
      // some code here      
}

在我们声明变量的其他地方,这本书使用了更常用的语法boolean a = false表示法.堆栈溢出有许多解释什么是Boolean.FALSE的答案,但没有一个说明何时应该使用它.

在相等运算符的上下文中编写Boolan.FALSE(或Boolan.TRUE)是一种常见的/良好的实践吗?如果是,那是为什么?

或者,这是个人喜好和代码可读性的问题吗?

推荐答案

编写Boolan.FALSE(或Boolan.TRUE)是一种常见的/良好的实践吗 在等式运算符的上下文中?如果是,那是为什么?

在一般情况下使用Boolean.FALSEnot种常见/良好的做法,但在某些特定情况下,使用Boolean.FALSE可能会很有用.其中一种情况是您问题中的代码.

基本上,该代码的意思与if (!scopes.isEmpty() && scopes.peek().get(expr.name.lexeme) != null && !scopes.peek().get(expr.name.lexeme))相同,但不会两次呼叫peek().get(...).

如果您想要完全相同的结果,但不使用Boolean.FALSE,则必须这样写:

Boolean tmp;
if (!scopes.isEmpty() && (tmp = scopes.peek().get(expr.name.lexeme)) != null && !tmp) {
   ...
}

因此,在某些特定的情况下,使用xxx == Boolean.FALSE也有其用处.

Java相关问答推荐

try Dockerize Maven应用程序,但发布版本21不支持"

ActivityCompat.请求收件箱自动拒绝权限

那么比较似乎不是词典学的,尽管doctor 这么说

将linkedHashMap扩展到Java中的POJO类

Mat. n_Delete()和Mat. n_release的区别

在现代操作系统/硬件上按块访问数据值得吗?

在spring—data中自动发现native—sql查询期间遇到重复的SQL别名[id]

当我已经安装了其他版本的Java时,如何在Mac OSX 14.3.1上安装Java 6?

将带有js文件的 bootstrap 程序导入maven项目时出错

为什么在maven中,getLast方法不适用于List?

把一条整型短裤和两条短裤装成一条长的

在Java 15应用程序中运行Java脚本和Python代码

如果按钮符合某些期望,如何修改它的文本?

使用While循环打印素数,无法正常工作

Java组件项目中的JavaFX对话框国际化

有没有办法在o(log(N))中以系统的方式将数组中的小块元素复制和移动到新增长的数组中的左侧?

在整数列表中查找和可被第三个整数整除的对时出现无法解释的RunTimeError

如何对存储为字符串的大数字数组进行排序?

TinyDB问题,无法解析符号';上下文&

JAVA 正则表达式识别字符串string或字符串内的字符char