wood burning stoves*
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 Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Java Ternary Operator" Watch "Java Ternary Operator" New topic
Author

Java Ternary Operator

Jehan Jaleel
Ranch Hand

Joined: Apr 30, 2002
Posts: 196
Hi,

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
Sheriff

Joined: Oct 13, 2005
Posts: 37923
    
  22
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: 2982
    
    9
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
Mike,

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
Sheriff

Joined: Oct 27, 2005
Posts: 19649
    
  18

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.

So:

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.


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 7495
    
  18

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.

Winston

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: 2982
    
    9
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
 
Similar Threads
why to use conditional operator " ? " ?
Problem with cell Editing of three columns
regarding ternary operator
how return value is resolved
can any one explain this