Reputation: 32355
I'm brand new to java, coming from a ruby world. One thing I love about ruby is the very terse syntax such as ||=.
I realize of course that a compiled language is different, but I'm wondering if Java has anything similar.
In particular, what I do all the time in ruby is something like:
someVar ||= SomeClass.new
I think this is incredibly terse, yet powerful, but thus far the only method I can think of to achieve the same thing is a very verbose:
if(someVar == null){
someVar = new SomeClass()
}
Just trying to improve my Java-fu and syntax is certainly one area that I'm no pro.
Upvotes: 4
Views: 584
Reputation: 1
This looks like you could add a method to SomeClass similar to
public static someClass enforce(someClass x) {
someClass r = x.clone();
if(r == null){
r = new SomeClass();
}
return r;
}
And call it like
someVar = SomeClass.enforce(someVar);
Upvotes: 0
Reputation: 1109865
No, there's not. But to replace
if(someVar == null){
someVar = new SomeClass()
}
something similar is scheduled for Java 7 as Elvis Operator:
somevar = somevar ?: new SomeClass();
As of now, your best bet is the Ternary operator:
somevar = (somevar != null) ? somevar : new SomeClass();
Upvotes: 10
Reputation: 13694
I think the best you could do is the ternary operator:
someVar = (someVar == null) ? new SomeClass() : someVar;
Upvotes: 5
Reputation: 44078
There is no equivalent in Java. Part of the reason for this is that null
is not considered false
.
So, even if there was a logical OR-assignment keyword, you have to remember that:
Object x = null;
if (!x) { // this doesnt work, null is not a boolean
Upvotes: 1