Dhrumil Upadhyaya Dhrumil Upadhyaya - 5 months ago 36
Java Question

Optional in Lombok

I have a class call Address which looks like this:

class Address {

@NotNull String userId;
@NotNull String line1;
String line2;

private Address(Builder b) {
// copy everything from builder

// override getter for line2 so that it returns Optional<String>
public Optional<String> getLine2() {
return Optional.fromNullable(this.line2);

// and a Builder
public static class Builder {
// builder methods

Here I am forced to write
and a
because, if I want to return an Optional while using Lombok, I will have to declare
. And that will generate a builder method which accepts

Is there any other way to use lombok with Optional?


The answer is no, and it probably never will.

You're probably doing it wrong :-) Optional is not a replacement for null nor a fancy way to prevent NullPointerException. It is to indicate that the question is unanswerable, like: what is the average age of an empty list of persons.

Optionals should never be passed on, but unboxed by the calling code as soon as possible.

See also https://www.voxxed.com/blog/2015/01/embracing-void-6-refined-tricks-dealing-nulls-java/

Since these scenarios are just a handful, and Lombok likes to enable programmers to write better code, I don't expect there will ever be support for it in Lombok.

Disclosure: I am a Lombok developer.