Java short circuit evaluation

后端 未结 7 1436
深忆病人
深忆病人 2021-01-07 23:26

I thought Java had short circuit evaluation, yet this line is still throwing a null pointer exception:

if( (perfectAgent != null) && (perfectAgent.ge         


        
7条回答
  •  囚心锁ツ
    2021-01-07 23:39

    If perfectAgent is genuinely null, that code won't throw an exception (at least assuming there aren't weird threading things going on, changing it from non-null to null half way through the expression). I would be utterly shocked if you could produce a short but complete program demonstrating it doing so.

    So yes, your intuition is right - this shouldn't be a problem. Look elsewhere for the cause. I strongly suspect that perfectAgent isn't actually null, and that you're running into any of the other situations in that code which could cause an exception.

    I suggest you try to extract that bit of code out into a short but complete example - if you can do so, I'll eat my metaphorical hat; if not, you'll hopefully find the problem while you attempt the extraction.

    What makes you think that perfectAgent really is null? Try inserting this code before it:

    if (perfectAgent == null)
    {
        System.out.println("Yup, it's null");
    }
    

    Another very, very slim possibility is that you've run into a JIT bug - but I highly doubt it.

提交回复
热议问题