Как запретить @Data генерировать методы? Lombok
Начал изучать Lombok. У меня есть класс, для которого идеально подходит аннотация @Data, вот только не надо, чтобы генерировались методы hashCode() и equals(). Есть ли какая-то возможность запретить @Data генерировать эти два метода? А то обидно получается такую портянку писать:
@ToString
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
Ответы (2 шт):
В последней на данный момент версии Lombok 1.18.16 это невозможно.
Я пошарил по интернету и нашёл упоминание тут. Но ишью давным давно закрыт, и вряд ли эти изменения добавят в следующих версиях.
На данный момент, единственно возможным вариантом будет самому переопределить эти методы, но это имеет смысл только если, например, у вас появляется циклическая зависимость. Тоесть:
@Data
public class First {
private long id;
private Second second;
}
@Data
public class Second {
private long id;
private List<First> list;
}
Тогда, например, сгенерированный аннотацией @Data метод toString() будет рекурсивно ходить сначала к первому классу, оттуда ко второму, оттуда снова к первому, и так до тех пор, пока не упает с какой-нибудь ошибкой. А иначе, не вижу смысла их переопределять)
Но аннотация @Data делает конструктор со всеми полями, поэтому, чтобы конструктор так же был без аргументов, допишите одну аннотацию (итого две)