jQuery in Action, 3rd edition
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 Java Interview Guide this week in the Jobs Discussion 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: 46437
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: 20279

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: 8956

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.


Bats fly at night, 'cause they aren't we. And if we tried, we'd hit a tree -- Ogden Nash (or should've been).
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: http://aspose.com/file-tools
subject: Java Ternary Operator
It's not a secret anymore!