-1

我正在尝试运行此:PGDirTestController.performExecute();which 调用performExecute()方法,该方法应属于最终调用else{}的方法performExecute()callUSInterface();

不幸的是,这会引发 NullPointerException:

Exception in thread "main" java.lang.NullPointerException
    at com.XX.commerce.bes.member.test.commands.XXGetProgramGuideDirectTestControllerCmdImpl.performExecute(XXGetProgramGuideDirectTestControllerCmdImpl.java:51)
    at com.XX.commerce.bes.member.test.commands.XXGetProgramGuideDirectTestControllerCmdImpl.main(XXGetProgramGuideDirectTestControllerCmdImpl.java:199)

XXGetProgramGuideDirectTestControllerCmdImpl 的第 51 行是:

if (getRequestProperties().getString(XXMessagingConstants.STORE_ID).equals(XXMessagingConstants.DE_STORE_ID)) {

XXGetProgramGuideDirectTestControllerCmdImpl 的第 199 行是:

PGDirTestController.performExecute();

任何人都看到我做错了什么以及如何解决它?

我对java还是很陌生。

4

3 回答 3

1

可能这个表达式返回null

getRequestProperties().getString(XXMessagingConstants.STORE_ID)

您可能应该为该场景添加单独的检查。要么你扭转局面:

if (XXMessagingConstants.DE_STORE_ID.equals(getRequestProperties().getString(XXMessagingConstants.STORE_ID))

正如@Stefan Beike 所述。这将使这个 null 情况成为一个不相等的值。或者,当你得到 时,也许你想做一些完全不同的事情null,所以你可能会做类似的事情

if (getRequestProperties().getString(XXMessagingConstants.STORE_ID) == null)
    log.wanr("request parameter is Null, this shouldn't be this way");
else if (XXMessagingConstants.DE_STORE_ID.equals(getRequestProperties().getString(XXMessagingConstants.STORE_ID)) 
    ....
于 2013-07-12T11:09:23.703 回答
1

IMO最好使用if-condition这样的:

if (XXMessagingConstants.DE_STORE_ID.equals(getRequestProperties().getString(XXMessagingConstants.STORE_ID)) {

即 Null 已保存!

于 2013-07-12T11:10:35.127 回答
0

您可以通过交换您正在检查的字符串来避免 NPE。

if (XXMessagingConstants.DE_STORE_ID.equals(getRequestProperties().getString(XXMessagingConstants.STORE_ID)) {

有关更多信息,请查看 API 参考http://docs.oracle.com/javase/6/docs/api/java/lang/String.html中的 equals() 方法。

于 2013-07-12T11:12:36.980 回答