ich etwas entlang der Linien von habe:"Unexpected token" mit niedrigerem begrenzt Wildcard (Java)
interface Foo<T> {
//... lines [0,45]...
/*line 46*/ <R, X super T&R> List<X> weave(R value);
//...
}
Aber IntelliJ berichtet:
- Fehler: (46, 18) java: > erwarteten
- Fehler: (46, 19) Java: illegaler Beginn des Typs
- Fehler: (46, 26): Java '(' erwartet
- Fehler: (46, 28), Java: < identifier> erwartet
- Fehler: (46, 29) java: 'l' erwartet
- Fehler: (46, 43) java: < identifier> erwartet
Was ist das Problem? Darf ich einen Namen nicht an eine untere Grenze binden? Oder darf ich nur einen R&X
Ausdruck in einer oberen Grenze verwenden?
Ändern es
interface Foo<T> {
//... lines [0,45]...
/*line 46*/ <R> List<? super T&R> weave(R value);
//...
}
ergibt
- Fehler (46, 31) Java:> erwartet
- Fehler (46, 32): Java '(' erwartet
- Fehler (46, 33) java: illegaler start des typs
@gerttman FYI Ihre Antwort war richtig. Der Downvoter und die Leute, die den Downvote begründeten, verwechselten Wildcards mit Typparametern. "Sie können eine Typvariable nicht als super deklarieren": http://stackoverflow.com/questions/2800369/bounding-generics-with-super-keyword "Sie können nicht zwei Grenzen deklarieren, die selbst generische Typparameter sind" : http://stackoverflow.com/questions/13101991/java-generics-make-generic-to-exends-2-interfaces –