This week's book giveaway is in the OCAJP 8 forum.
We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line!
See this thread for details.
The moose likes Java in General and the fly likes Java Ternary Operator Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of OCA Java SE 8 Programmer I Study Guide this week in the OCAJP 8 forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Java Ternary Operator" Watch "Java Ternary Operator" New topic

Java Ternary Operator

Jehan Jaleel
Ranch Hand

Joined: Apr 30, 2002
Posts: 196

I have been coding in Java for years but never used the Java Ternary Operator that much (always did it the hard way). Now I am playing with it but the following code is not working as I expect it to...

Right now it is throwing an Null Pointer Exception. But I am wondering why, I just want it to return the value from the Map if it finds it or return null if it doesn't.

Thanks in advance for any help.
Campbell Ritchie

Joined: Oct 13, 2005
Posts: 44605
You need to know a lot more details.
Are you sure the Exception is actually thrown inside that method?
What sort of structure is the map: does it behave like HashMap or like Hashtable with respect to nulls?
Which reference is null? Is it the map, or the argument to that method? If the argument is a long, it is hardly likely to be null. Does the map take Longs as its Ks?
Mike Simmons
Ranch Hand

Joined: Mar 05, 2008
Posts: 3028
If line 4 is the line throwing the exception, I think the only thing that could cause the problem is if adviceHeaderMap itself is null. How is this field initialized?
Jehan Jaleel
Ranch Hand

Joined: Apr 30, 2002
Posts: 196

You are right, the problem is that the HashMap itself was null. I was thinking that I was not using the Ternary operator correctly and trying to cast a null.

Thanks again for your help.
Rob Spoor

Joined: Oct 27, 2005
Posts: 20136

One piece of advice: don't call methods twice if you can instead use a variable to store the results. Let's say your map was a TreeMap with millions of records. The get could take a bit of time. By calling it twice your method takes twice as long as needed.


And in this case you will immediately see that the ternary operator isn't needed; if header != null you will return header, and otherwise (header == null) you still return the value of header.

How To Ask Questions How To Answer Questions
Winston Gutkowski

Joined: Mar 17, 2011
Posts: 8663

Rob Spoor wrote:One piece of advice: ...

@Jehan: Another piece of advice: DontWriteLongLines.

I've broken yours up this time; but the only reason I needed to is that your method names - while certainly descriptive - are a case of "descriptive overkill".

Maybe you had no choice in this case, but I'd definitely advise a bit of moderation if you're writing methods in the future.


Isn't it funny how there's always time and money enough to do it WRONG?
Articles by Winston can be found here
Mike Simmons
Ranch Hand

Joined: Mar 05, 2008
Posts: 3028
Yeah, but now my earlier comment about "line 4" should be modified to be "lines 3-5".
I agree. Here's the link:
subject: Java Ternary Operator
jQuery in Action, 3rd edition