Ty si delas srandu?
Nedělám a pořád mi to neni jasné.
Tak jeste pomaleji:
final Foo f = foo()
f.bar()
V tomhle kodu neni bez dalsi znalosti/studia jasne, zda f muze byt null
ALE f.bar() je naprosto bezny obrat a proto projde casto bez povsimnuti.
V
final Optional<Foo> f = foo()
f.get().bar()
je naprosto zrejme, ze
- foo() muze vratit "nic"
- f.get() bez kontroly je krajne podezrely obrat
Podtrzeno secteno - veci jsou zrejmejsi (ze neco muze nemit hodnotu je explicitni) a zaroven bezpecnejsi (nebezpecne operace jsou podezrele na prvni pohled jak pro lidi tak pro statickou analyzu). Navic dostavas prostredky pro bezpecnou praci s tou (ne) hodnotou, jako je map(), filter(), flatMap(). Ty jsou casto elegantnejsi nez if (f.isPresent()), protoze lepe umozni retezit operace.
Samozrejme je tady dalsi prostor pro zlepseni, z toho prikladu je trebas celkem videt, ze by Jave prospela typova inference... ale to je uz jiny pribeh.