sagen, ich habe folgende Beispielanwendung, ich bin mit Java 8.Java Generics mit obere Schranke
I Klasse verfolgt haben, die ein Kind Klasse:
public class GrantedAuthority { }
public class GrantedAuthoritySubClass extends GrantedAuthority { }
Nach Klasse ist, wo der schwierige Teil passiert:
public class UserDetails {
Collection<? extends GrantedAuthority> authorities;
public Collection<? extends GrantedAuthority> getAuthorities(){
return authorities;
}
}
Meine Hauptmethode:
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);
}
}
Wenn ich laufe dies ich folgende Fehlermeldung erhalten:
Error:(12, 35) java: incompatible types:
java.util.List<GrantedAuthority>
cannot be converted tojava.util.Collection<? extends capture#1 of ? extends GrantedAuthority>
Mein Problem ist, wie ich eine Sammlung von GrantedAuthoritySubClass
Objekten der Sammlung von u.getAuthorities()
zurücktreten kann. Ich kann es nicht herausfinden und es gibt so viele Kompilierungsfehler bei den verschiedenen Möglichkeiten, die ich versucht habe.
was der Punkt Wildcard zu haben in Ihrem Beispiel? werfen Sie einen Blick auf http://stackoverflow.com/questions/2745265/is-listdog-a-subclass-of-listanimal-why-arent-java-generics-implicitly-p?rq=1 – JEY
@JEY Dies ist über den Frühling -Sicherheit 4.0.3 und UserDetails Klasse im Frühjahr wie oben strukturiert. Ich wollte nur die Frage einfacher machen, ohne das zu erwähnen. – nilan59
nur zurück Sammlung Ich sehe keinen Punkt mit einem Platzhalter. –
JEY