实现也被覆盖的方法

时间:2018-08-07 12:17:50

标签: java methods extends implements

我正在将spring-security添加到我的应用中,遇到了一个问题。我的UserDetails实现实现了org.springframework.security.core.userdetails.UserDetails,但也扩展了我的User实体类。两者都有一个getPassword()方法,由于密码被加密,spring安全接口的方法返回一个String,而我的返回一个字节数组。

我希望我的实现实现接口的方法,而不是重写我的实体类的方法,但是Netbeans不断给出错误,指出返回类型无效。我想避免重命名我的getPassword()方法来解决此问题。

是否有一种方法告诉编译器实现接口的方法,而不是重写超类?

谢谢

2 个答案:

答案 0 :(得分:4)

重载时不考虑返回类型,因此从本质上讲您不能真正做到这一点。我只是简单地重命名我的实现。

答案 1 :(得分:2)

您无法做到,返回类型不是两个其他相同的Java方法签名之间的唯一区别。

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

public class MyUserDetails implements UserDetails {

  private final User user;

}