【发布时间】:2019-08-11 21:21:12
【问题描述】:
我经常遇到以下 IntelliJ 检查
private boolean bar() {
return foo().contains("foo"); // Method invocation 'contains' may produce 'java.lang.NullPointerException'
}
private String foo() {
return null;
}
检查对我来说似乎很好,但是 IntelliJ 建议的修复方法之一(或通常是唯一的)是这样的:
private boolean bar() {
return Objects.requireNonNull(foo()).contains("foo");
}
然后警告就消失了。但我不明白这有什么帮助? requireNonNull 将抛出与在 null 上调用 .contains 时无论如何都会抛出的相同的 NullPointerException。
通常,IntelliJ 会提出有意义的建议,这是一个常见的建议,所以我在这里漏掉了重点吗?
【问题讨论】:
-
我同意建议的解决方案并不比问题本身更好。
-
我猜这个建议在这里毫无意义,因为你得到一个对象并立即使用它。如果您在一个地方获取一个对象并在另一个地方取消引用,则更有意义。这样异常会更早的抛出,效果更好。听起来还是不太合理。
-
我同意。无论如何,解决方案都会给你NPE:)
标签: java intellij-idea nullpointerexception intellij-inspections