Как использовать аннотации @Delegate в lombok в Java - PullRequest
0 голосов
/ 18 июня 2020

Я хотел бы использовать аннотации @Delegate lombok в моем коде. Пожалуйста, проверьте фрагмент кода ниже, и он выдает ошибку: getAge() уже определено:

public interface I {
    String getName();
    int getAge();
}

@Data
public class Vo {
    private String name;
    private long age;
}

@AllArgsConstructor
public class Adapter implements I {

    @Delegate(types = I.class)
    private Vo vo;

    //I want to use my own code here,Because vo.getAge() returns a long,But I.getAge() expects a int
    public int getAge(){
        return (int) vo.getAge();
    }
}

1 Ответ

2 голосов
/ 18 июня 2020

Из документации lombok :

Чтобы иметь очень точный контроль над тем, что делегировано, а что нет, напишите частные внутренние интерфейсы с сигнатурами методов, затем укажите эти частные внутренние интерфейсы как типы в

@Delegate(types=PrivateInnerInterfaceWithIncludesList.class, excludes=SameForExcludes.class).

Это означает, что чтобы включить все в I, но исключить только getAge, вы можете объявить дополнительный внутренний интерфейс следующим образом:

private interface Exclude {
    int getAge();
}

и передайте его на exclude:

@Delegate(types = I.class, excludes = Exclude.class)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...