Как добавить сеттер в класс с помощью Lombok @Value - PullRequest
0 голосов
/ 09 ноября 2018
@Value
@Builder
public class XXX {
    String field1;
    String field2;
    String field3;
}

У меня есть класс, использующий lombok @Value, как указано выше, где каждое поле будет сделано приватным и окончательным. Теперь я хотел бы иметь установщик для field3, который не работает, потому что field3 является окончательным. Что мне здесь делать?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Не используйте @Value тогда. @Value для классов значений, то есть классов, экземпляры которых являются неизменяемыми. Если вы хотите, чтобы поле было изменяемым, то у вас явно нет класса значений.

Вместо этого заполните все остальные поля final вручную. Затем используйте @Getter и @RequiredArgsConstructor@EqualsAndHashCode, если требуется) в классе и @Setter во всех не финальных полях. (Или используйте @Data, но внимательно прочитайте его документацию.)

0 голосов
/ 09 ноября 2018

Почему field3 финал? Когда переменная объявляется с ключевым словом final, ее значение не может быть изменено, по сути, константа. Вы должны удалить его!

Здесь вы устанавливаете свойства при создании объекта

XXX s = XXX.builder (). Field1 ("XX"). Field2 ("XX"). Field3 ("XX"). Build (); сеттер здесь не нужен

...