实现一个也被覆盖的方法

Implementing a method that is also overriden

我正在将 spring-security 添加到我的应用程序中,但遇到了一个问题。我的 UserDetails 实现实现了 org.springframework.security.core.userdetails.UserDetails,但也扩展了我的 User 实体 class。这两个都有一个 getPassword() 方法,spring 安全接口的方法 return 是一个 String 而我的 return 是一个字节数组,因为密码是加密的。

我希望我的实现实现接口的方法而不是覆盖我的实体 class' 方法,但 Netbeans 一直给出 return 类型无效的错误。我想避免重命名我的 getPassword() 方法来解决这个问题。

有没有办法告诉编译器实现接口的方法而不是重写 superclass?

谢谢

你做不到,return 类型不能是两个完全相同的 Java 方法签名之间的唯一区别。

修复它的最简单方法是将 User 声明为字段而不是扩展它:

public class MyUserDetails implements UserDetails {

  private final User user;

}

Return 重载时不考虑类型,所以基本上你不能真正做到这一点。我会简单地重命名我的实现。