Java核心:将null作为布尔值返回

Ale*_*ets 4 java null boolean

我注意到了这一点:我的类有boolean成员,在某些运行点我看到它在调试器中的价值null.但是当我使用getter方法时,它会返回false.

我知道,大多数书都告诉你,boolean在Java中只有两个值,不像C/C++,其中每个非零数字都可以解释为true.所以我想知道,那里发生了什么?

当其他类型的某些值或null可被解释为时,还有其他任何情况false吗?也许在JLS的某个地方解释这个问题,有人可以指点我吗?

编辑:确实昨天是调试的糟糕日子.首先,我浪费了4个小时来找到一个错误的来源,当我逆转来源并再次做出相同的改变时,这个错误消失了.然后这个.我只是试图重现而不能.它是美化还是只是星期一是艰难的一天?我不知道.感谢大家的回应!我想你可以投票立即关闭或删除这个问题.

Mat*_*all 11

听起来这个字段被声明为可空的包装类型Boolean而不是boolean基元.

  • 我想我们真正能说的是我们需要先看代码. (6认同)
  • 在这种情况下,getter不会返回`false`,而是抛出一个NPE. (2认同)