条件中main()的NullPointerException

时间:2013-07-12 11:06:45

标签: java nullpointerexception

我正在尝试运行此操作: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的新手。

3 个答案:

答案 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()方法。