Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java "?" Operator for checking null - What is it? (Not Ternary!)

Tags:

java

syntax

null

I was reading an article linked from a slashdot story, and came across this little tidbit:

Take the latest version of Java, which tries to make null-pointer checking easier by offering shorthand syntax for the endless pointer testing. Just adding a question mark to each method invocation automatically includes a test for null pointers, replacing a rat's nest of if-then statements, such as:

     public String getPostcode(Person person) {       String ans= null;       if (person != null) {         Name nm= person.getName();         if (nm!= null) {           ans= nm.getPostcode();         }       }       return ans     } 

With this:

 public String getFirstName(Person person) {       return person?.getName()?.getGivenName();     } 

I've scoured the internet (okay, I spent at least 15 minutes googling variations on "java question mark") and got nothing. So, my question: is there any official documentation on this? I found that C# has a similar operator (the "??" operator), but I'd like to get the documentation for the language I'm working in. Or, is this just a use of the ternary operator that I've never seen before.

Thanks!

EDIT: Link to the article: http://infoworld.com/d/developer-world/12-programming-mistakes-avoid-292

like image 662
Erty Seidohl Avatar asked Dec 08 '10 17:12

Erty Seidohl


People also ask

Is null ternary operator?

Ternary Operator checks whether the value is true, but Null coalescing operator checks if the value is not null. If there is more iteration to be executed, null coalescing operator found to be faster than the ternary operator. Null coalescing operator gives better readability as well comparatively.

IS NULL operator in Java?

It is considered a concatenation in java. Here, the null will only be concatenated with the String variable. If we use “+” operator with null and any other type(Integer, Double, etc.,) other than String, it will throw an error message.

How do you check if it is null in Java?

To check if a string is null or empty in Java, use the == operator.

What is ternary operator in Java?

Java ternary operator is the only conditional operator that takes three operands. It's a one-liner replacement for the if-then-else statement and is used a lot in Java programming. We can use the ternary operator in place of if-else conditions or even switch conditions using nested ternary operators.


1 Answers

The original idea comes from groovy. It was proposed for Java 7 as part of Project Coin: https://wiki.openjdk.java.net/display/Coin/2009+Proposals+TOC (Elvis and Other Null-Safe Operators), but hasn't been accepted yet.

The related Elvis operator ?: was proposed to make x ?: y shorthand for x != null ? x : y, especially useful when x is a complex expression.

like image 182
ataylor Avatar answered Sep 21 '22 19:09

ataylor