Можно ли исключить поля из аннотации lomboks @Data? - PullRequest
0 голосов
/ 20 февраля 2019

Допустим, это мой класс.И я хочу получить и установщики для всех полей, кроме даты.Это способ исключить?

@Data
public class User {
    String first;
    String last;
    String email;
    Date dob;
    Boolean active;
}

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Ну, или еще лучше, используйте AccessLevel.NONE, чтобы полностью не генерировать геттер или сеттер.Частный получатель или установщик не будут созданы.

@Getter(value=AccessLevel.NONE)
@Setter(value=AccessLevel.NONE)
private Date dob;
0 голосов
/ 20 февраля 2019

Вы можете сделать это, используя следующие аннотации:

    @Getter(value=AccessLevel.NONE)
    @Setter(value=AccessLevel.NONE)
    private LocalDate dob;

Также лучше использовать LocalDate вместо Date.Date является устаревшим API.

@ pirho, ваш пример по-прежнему создает метод получения и установки, но делает их закрытыми.

0 голосов
/ 20 февраля 2019

Я думаю, что это единственный способ скрыть:

@Getter(value=AccessLevel.PRIVATE)
@Setter(value=AccessLevel.PRIVATE)
private Date dob;

или, может быть, лучше с AccessLevel.NONE, как ответ Кена Чана предлагает

, поэтому переопределяет доступуровень.Однако это не скрывает это от конструкторов.

Также вы можете делать трюки с наследованием.Определите класс как:

public class Base {
    // @Getter if you want
    private Date dob;
}

и дайте вашему User расширить это:

@Data
public class User extends Base {
    private String first;
    private String last;
    private String email;
    private Boolean active;
}
...