Ich habe ein relativ einfach aussehendes Problem, das ich versuche zu lösen. Es scheint keinen intuitiven Weg zu geben, oder ich vermisse etwas hier.Java 8 generische Sammlungen mit Optionals
Betrachten Sie diese Methode, um das Haupt-Bild zu finden und wenn keine vorhanden ist, kehrt erste image-
public Image findMainImage(Collection<? extends Image> images) {
if (images == null || images.isEmpty()) return null
return images.stream()
.filter(Image::isMain)
.findFirst()
.orElse(images.iterator().next())
}
Ich erhalte eine Fehlermeldung - orElse(capture<? extends Image>) in Optional cannot be applied
Jede Richtung auf das wäre toll.
Dies würde wahrscheinlich funktionieren, wenn es nur eine 'Collection' wäre, aber die Art, wie Generika funktionieren, 'Optional .orElse' kann nur ein' T' akzeptieren. –
Kannst du die Methodensignatur in 'public T findMainImage (Collection images) ändern' –
Misha
@misha Ich verstehe, wie es funktioniert, indem ich die Signatur ändere, ich bin mehr daran interessiert, die Gründe dahinter zu verstehen. – sanz