Ломбок аннотаций @RequiredArgsConstructor
генерирует пустой конструктор, когда нет окончательных полей нет, этот код компилируется без ошибок:Ломбок @data не генерирует пустой конструктор ти без каких-либо конечных полей
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class LombokTest {
public LombokTest(String a) {
// to avoid creation of the default constructor by the Java compiler
}
public static void main(String[] args) {
new LombokTest();
}
}
Согласно документации Ломбок, аннотации @Data
также должен генерировать RequiredArgsConstructor
, но в следующем коде
import lombok.Data;
@Data
public class LombokTest {
public LombokTest(String a) {
// to avoid creation of the default constructor by the Java compiler
}
public static void main(String[] args) {
new LombokTest();
}
}
новый LombokTest() в основном методе приводит к ошибке, так как конструктор без аргументов не определен ,
Это ошибка в Ломбоке?
По умолчанию пустой конструктор будет генерироваться компилятором Java, а не Lombok. Документация Lombok гласит: '@Data - это удобная сокращенная аннотация, которая объединяет функции @ToString, @EqualsAndHashCode, @Getter/@Setter и @RequiredArgsConstructor вместе ...' Поэтому он всегда должен генерировать RequiredArgsConstructor, который является пустым конструктором в этом случае. – balage
Да emtpy construtor будет генерироваться Java, но только если у вас нет другого конструктора: lombok придерживается этого принципа ... – rlm
Вот почему я добавил явный конструктор в обоих случаях, чтобы мы могли сосредоточиться на поведении Ломбока. – balage