2016-12-30 2 views
1

I String in Liste sammle Java unter Verwendung 8. Aber das ist mir Fehler geben kompilieren, dassjava 8 collect Liste <String>

inkompatible Typen: variable T Inferenz hat unvereinbar Grenzen Gleichheitsbedingungen: String niedriger Grenzen: Object

final List<ProjectLevel> levels = projectLevelFacade 
        .findUUIDByNameorNumber(freeText, businessAccountId); 
final List<String> uuids = levels 
        .stream() 
        .map((level) -> level.getProjectLevelsUUIDs()) // this return List<String> 
        .flatMap(Collection::stream) 
        .collect(Collectors.toList()); 

kann jemand haben Ahnung, wie dies zu erreichen, mit Hilfe von Java 8?

Gibt es irgendeine Art von Gießen oder etwas dafür?

Ich habe auch reference von hier genommen.

+1

Ist 'ProjectLevel' ein generisches? Sollte es 'ProjectLevel ' sein sonst wird 'getProjectLevelsUUIDs() 'nicht generisch sein. –

+0

@PeterLawrey ja es ist 'ProjectLevel ' – Hiru

+0

@PavneetSingh sollte es nicht funktionieren, da Fehler mich woanders schart. Lassen Sie mich noch versuchen – Hiru

Antwort

4

ProjectLevel ist eine generische Klasse - wenn Sie List<ProjectLevel> schreiben, verwenden Sie einen unformatierten Typ und das Inferenzsystem funktioniert nicht mehr.

Versuchen:

final List<ProjectLevel<?>> levels = projectLevelFacade 
       .findUUIDByNameorNumber(freeText, businessAccountId); 

und es sollte wie erwartet kompilieren.

+0

es hat funktioniert! aber das Problem, das jetzt entsteht, ist von namedQuery es gibt keinen generischen zurück. Bedeutet, dass es 'List ' zurückgibt. also nicht in der Lage, es in 'List >' – Hiru

+2

@Hiru zurückgeben, dann müssen Sie auch diese Methode ändern. – assylias

+0

Ja, ich habe es versucht, aber in der named-Abfrage kann ich 'getResultList()' nicht in 'List >' – Hiru

Verwandte Themen