В интерфейсе, описывающем службу, у меня есть методы, подобные этому:
TaskCard saveTaskCard(@NonNull TaskCard card, User user);
Я помещаю аннотацию @NonNull
(lombok) перед аргументом, но она не будет работать сама по себе если такой же аннотации нет в реализации. Это означает, что в методах класса, реализующего этот интерфейс, мне нужно будет снова поставить эту аннотацию, тем самым дублируя код.
@Override
@Transactional
public TaskCard saveTaskCard(@NonNull TaskCard taskCard, User user) {
taskCard.setUser(user);
return repository.save(taskCard);
}
Вопрос в том, так ли это должно быть? Если вы поместите эту аннотацию только в интерфейс, они не будут работать, а если вы поместите ее только в класс, реализующий интерфейс, то пользователи API могут не понять, что null
нельзя передать этим методам. Что мне делать?