我正在将spring-security
添加到我的应用中,遇到了一个问题。我的UserDetails
实现实现了org.springframework.security.core.userdetails.UserDetails
,但也扩展了我的User
实体类。两者都有一个getPassword()
方法,由于密码被加密,spring安全接口的方法返回一个String
,而我的返回一个字节数组。
我希望我的实现实现接口的方法,而不是重写我的实体类的方法,但是Netbeans不断给出错误,指出返回类型无效。我想避免重命名我的getPassword()
方法来解决此问题。
是否有一种方法告诉编译器实现接口的方法,而不是重写超类?
谢谢
答案 0 :(得分:4)
重载时不考虑返回类型,因此从本质上讲您不能真正做到这一点。我只是简单地重命名我的实现。
答案 1 :(得分:2)
您无法做到,返回类型不是两个其他相同的Java方法签名之间的唯一区别。
最简单的解决方法是将User
声明为字段而不是扩展它:
public class MyUserDetails implements UserDetails {
private final User user;
}