說我有下面的示例應用程序,我用java 8.Java泛型與上限
我有以下有一個子類類:
public class GrantedAuthority { }
public class GrantedAuthoritySubClass extends GrantedAuthority { }
以下的類,其中棘手的部分發生:
public class UserDetails {
Collection<? extends GrantedAuthority> authorities;
public Collection<? extends GrantedAuthority> getAuthorities(){
return authorities;
}
}
我的主要方法:
public class Main {
public static void main(String[] args) {
UserDetails u = new UserDetails();
List<GrantedAuthority> list = new ArrayList<GrantedAuthority>();
list.add(new GrantedAuthoritySubClass());
u.getAuthorities().addAll(list);
}
}
當我運行此我得到以下錯誤:
Error:(12, 35) java: incompatible types:
java.util.List<GrantedAuthority>
cannot be converted tojava.util.Collection<? extends capture#1 of ? extends GrantedAuthority>
我的問題是,如何傳遞的GrantedAuthoritySubClass
對象的集合,通過u.getAuthorities()
返回的集合。我無法弄清楚,並且有很多編譯錯誤附加到我嘗試過的各種方式。
什麼在你的例子有通配符的意義呢?看看http://stackoverflow.com/questions/2745265/is-listdog-a-subclass-of-listanimal-why-arent-javas-generics-implicitly-p?rq=1 – JEY
@JEY這是關於春天彈簧結構如上所述的安全4.0.3和UserDetails類。我只是想提出這個問題而不提這個問題。 – nilan59
只是返回Collection我沒有看到有通配符的要點。 –
JEY