[infinispan-dev] Strategy to adopting Optional in APIs

Radim Vansa rvansa at redhat.com
Thu Mar 30 11:47:58 EDT 2017


Hi,

I was wondering what's the common attitude towards using Optional in 
APIs, and what naming pattern should we use. As an example, I dislike 
calling

if (entry.getMetadata() != null && entry.getMetadata().version() != null) {
     foo.use(entry.getMetadata().version())
}

where I could just do

entry.metadata().flatMap(Metadata::optionalVersion).ifPresent(foo::use)

Here I have proposed metadata() method returning Optional<Metadata> 
(regular getter method is called getMetadata()) and annoying 
optionalVersion() as version() is the regular getter.

Shall we adopt some common stance (use/don't use/use at developer's 
discretion) and naming conventions? Is it acceptable to start adding

default Optional<Foo> foo() { Optional.ofNullable(getFoo()); }

whenever we feel the urge to chain Optionals?

Radim

-- 
Radim Vansa <rvansa at redhat.com>
JBoss Performance Team



More information about the infinispan-dev mailing list