问题
I am getting NullPointerException
from the below line sometimes.
System.out.println("Date::"+ row != null ? row.getLegMaturityDate() : "null");
After adding brackets, it is fine.
System.out.println("Date::"+ (row != null ? row.getLegMaturityDate() : "null"));
Please clarify me the behavior. Thanks in advance.
回答1:
"Date::" + row
is never null, although row
sometimes is.
That is, "Date::"+ row != null
is equivalent to ("Date::"+ row) != null
which is always true.
回答2:
It's a matter of operator precedence. Christoffer Hammarström has the executive summary. See this page http://bmanolov.free.fr/javaoperators.php for more detail.
来源:https://stackoverflow.com/questions/8168130/ternary-operator-and-unexpected-nullpointerexception