Ломбок: RequiredArgsConstructor не работает
Кажется, что @RequiredArgsConstructor
не работает в коде ниже. Почему?
import java.io.Serializable;
import lombok.Data;
import lombok.RequiredArgsConstructor;
@Data
@RequiredArgsConstructor
public class User implements Serializable {
private String username;
/*public User(String username) {
this.username = username;
}*/
private static final long serialVersionUID = 8043545738660721361L;
}
Я получаю сообщение об ошибке:
javax.faces.el.EvaluationException: java.lang.Error: Unresolved compilation problem:
The constructor User(String) is undefined
По какой-то причине кажется, что он работает для другого класса домена, в котором не определен конструктор, а вместо этого используется аннотация @RequiredArgsConstructor
.
Ответы
Ответ 1
Согласно Документация,
Обязательные аргументы - это конечные поля и поля с ограничениями, такими как @NonNull.
Вам нужно сделать имя пользователя как @NonNull
@NonNull private String username;
И вы также должны сделать их окончательными.
Ответ 2
Также стоит отметить для будущих читателей, что @Data также предоставляет @RequiredArgsConstructor, поэтому использование обеих аннотаций не обязательно :)
Ответ 3
Вы установили плагин Lombok в intellij?
Если нет, то
File -> Settings -> Plusings: Search for Lombok (CodeStream) version.
Перезапустите IDE, и это должно быть исправлено.
Двойная проверка:
- У вас установлена библиотека Lombok с использованием Maven или Gradle.
- Включен
Annotation Processors
из intellij IDE из File -> Settings: Search for Annotation Processors