我认为 Java 有短路评估,但这一行仍然抛出空指针异常:
if( (perfectAgent != null) && (perfectAgent.getAddress().equals(entry.getKey())) ) {
在这种情况下perfectAgent
是null
,所以我只希望整个表达式返回false
,但我的应用程序仍然在这条线上崩溃,并出现 NullPointerException。
编辑,一般回应:
由于perfectAgent
is null
,不应该执行右边的任何内容&&
,因为表达式不可能为真。更重要的是,它不可能执行,perfectAgent.getAddress()
因为perfectAgent
它不包含有效的引用(它是 null 和 all)。我正在尝试使用短路评估来不必在单独的语句中检查 null,因为这会使逻辑更加草率。
编辑 2(或者,我是个白痴):是的,就像生活中的许多事情一样,你在向世界宣布你是个白痴之后就会立即找到答案。在这种情况下,我在执行其他操作时关闭了 Eclipse 的自动构建并且没有重新打开它,因此我正在调试与我的源代码不匹配的类文件。