I'd skip the ternary and go with
foo = Optional.ofNullable(bar)
.map(Bar::baz)
.orElse(null);
But if I didn't, I'd use the first form.
For discussing Java, the JVM, languages that run on the JVM, and other related technologies.
I'd skip the ternary and go with
foo = Optional.ofNullable(bar)
.map(Bar::baz)
.orElse(null);
But if I didn't, I'd use the first form.
I actually prefer
Optional.of(bar)
.map(Bar::baz)
.orElse(null)
You can crucify me but there is no way to miss the point in a quick glance here and I doubt that with JVM optimizations there is any meaningful performance impact, exceptionally in business code.
The second, or early return/continue/break.
But don't forget the third option:
foo = null
if (bar != null)
foo = bar.baz();
This is much more readable if nontrivial; the only downside is that this inhibits the practice of ubiquitous final
.
Actually, doesn't Java allow lazy final
if you don't initialize (that would require explicit else
)? I speak too many languages ...
This is much less readable if non-trivial. It's easy enough here, but now I need to search through the code to see where else foo was set.