Реализация метода, который также переопределен


Я добавляю spring-security в свое приложение и столкнулся с проблемой. Моя реализация UserDetails реализует org.springframework.security.core.userdetails.UserDetails, но также расширяет мой класс сущностей User. Оба они имеют метод getPassword(), метод spring security interface возвращает метод String, а мой возвращает массив байтов, так как пароль зашифрован.

Я хочу, чтобы моя реализация реализовала метод интерфейса и не переопределяла метод моего класса сущностей, но Netbeans продолжает выдавать ошибку, что тип возвращаемого значения недопустим. Я бы например, чтобы избежать переименования моего метода getPassword(), чтобы обойти эту проблему.

Есть ли способ сказать компилятору, чтобы он реализовал метод интерфейса вместо переопределения суперкласса?

Спасибо

2 3

2 ответа:

Возвращаемый тип не учитывается при перегрузке,поэтому, по сути, вы не можете этого сделать. Я бы просто переименовал свою реализацию.

Вы не можете этого сделать, возвращаемый тип не может быть единственным отличием между двумя другими идентичными сигнатурами метода Java.

Самый простой способ исправить это-объявить User Как поле, а не расширять его:

public class MyUserDetails implements UserDetails {

  private final User user;

}