Java字符串等于文字警告消息

Ofe*_*ial 0 java string nullpointerexception

为什么当我尝试执行以下操作时:(在java)

if (reason.equals("time")) { // my code }
Run Code Online (Sandbox Code Playgroud)

IDE向我显示此警告消息:(?)

方法调用'reason.equals("time")'可能会产生'java.lang.NullPointerException'

我找不到这条警告信息的抽象解释.

QBr*_*ute 6

如果reasonnull,你基本上会有null.equals("time")一个导致a NullPointerException.要解决这个问题,只需将两者交换:"time".equals(reason);


Bat*_*eba 5

这是你的IDE很可爱.如果reasonnull,那么你很可能得到一个java.lang.NullPointerException.

一个常见的解决方法是使用java.util.Objects.equals(reason, "time").该功能将为您执行任何null检查.

虽然,对于这个特殊情况,酷猫,知道文字肯定不是null,将重写为尤达表达

"time".equals(reason)

参考:https://en.wikipedia.org/wiki/Yoda_conditions