2017-02-01 56 views
0

为什么当我试图做到以下几点:(在javaJava字符串等于文字警告信息

if (reason.equals("time")) { // my code } 

的IDE显示我这个警告消息:

方法调用“(?) reason.equals(“time”)'可能产生'java.lang.NullPointerException'

我找不到对此警告消息的抽象解释。

+1

这是告诉你,在这个代码中,'reason'可能是'null';如果是的话,你的程序会抛出异常。 – khelwood

+0

如果你知道'NullPointerException'是那个警告不应该很难理解。因此,我假设你会想要阅读[什么是NullPointerException,以及如何解决它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do- i-fix-it) – Thomas

回答

6

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

5

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

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

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

"time".equals(reason)

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

+1

“Yoda Expression” - 从未听说过它被称为之前,但肯定适合;) – Thomas

+0

@Thomas:我已经添加了一个引用,在撰写本文时,它包含Java字符串的情况。 – Bathsheba