Initialize list if list is null with lombok getter?

L42 picture L42 · Jul 22, 2016 · Viewed 23.7k times · Source

I am currently replacing all my standard POJO's to use Lombok for all the boilerplate code. I find myself keeping getters for lists because I want to return an empty list if the list has not been initialized. That is, I don't want the getter to return null. If there some lombok magic that I'm not aware of that can help me avoid doing this?

Example of generated code

private List<Object> list;
public Object getList(){ return list; }

What I would like instead:

private List<Object> list;
public Object getList(){
    if (list == null) {
        return new ArrayList();
    }
    return list;
}

Answer

stacker picture stacker · Jul 22, 2016

You can achieve this by declaring and initializing the fields. The initialization will be done when the enclosing object is initialized.

private List<Object> list = new ArrayList();

Lomboks @Getter annotation provides an attribute lazy which allows lazy initialization.

 @Getter(lazy=true) private final double[] cached = expensiveInitMethod();

Documentation