Как я могу настроить поле сбора getter-only-lazy-initializing с помощью lombok?

Как сделать так, чтобы ломбок генерировал следующий метод получения?

// getter only
// lazy initialization
public List<Student> getStudents() {

    if (students == null) {
        students = new ArrayList<Student>();
    }

    return students;
}

private List<Student> students;

Делает простой @Getter будет делать это?

1 ответ

Решение

Я не уверен, что это правильный способ сделать это.

@Getter(lazy = true, @__({@XmlElement}))
private final List<Student> students = new ArrayList<Student>();

И ломбок генерирует следующий метод.

@XmlElement
@java.lang.SuppressWarnings("all")
@javax.annotation.Generated("lombok")
public List<Student> getStudents() {
    Object value = this.students.get();
    if (value == null) {
        synchronized (this.students) {
            value = this.students.get();
            if (value == null) {
                final List<Student> actualValue = new ArrayList<Student>();
                value = actualValue == null ? this.students : actualValue;
                this.students.set(value);
            }
        }
    }
    return (List<Student>)(value == this.students ? null : value);
}

private final AtomicReference<Object> students = new AtomicReference<Object>();
Другие вопросы по тегам