我正在尝试运行此操作:PGDirTestController.performExecute();
调用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的新手。
答案 0 :(得分:1)
这个表达式可能会返回null
:
getRequestProperties().getString(XXMessagingConstants.STORE_ID)
您应该为该方案添加单独的检查。要么你改变了条件:
if (XXMessagingConstants.DE_STORE_ID.equals(getRequestProperties().getString(XXMessagingConstants.STORE_ID))
如@Stefan Beike所述。这会使这个空案例成为不相等的值。或者你可能想要做一些完全不同的事情,当你得到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))
....
答案 1 :(得分:1)
IMO最好像这样使用if-condition
:
if (XXMessagingConstants.DE_STORE_ID.equals(getRequestProperties().getString(XXMessagingConstants.STORE_ID)) {
即Null已保存!
答案 2 :(得分: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()方法。