Java 8 - Typenkonflikt: Konvertierung von ListSerializable in ListString nicht möglich

8

Ich habe eine Liste von Strings:

%Vor%

Dann um alles in einer Liste wie folgt zu konvertieren: "a1","a2","b1","b2" hat folgendes geschrieben:

%Vor%

Aber ich hatte einen Fehler: "Typenkonflikt: kann nicht von List<Serializable> in List<String> " konvertiert werden. Ich behandelte das Problem, indem ich in dieses änderte:

%Vor%

Eclipse Neon schlägt vor, dass der Unterschied im flatMap Rückgabetyp liegt. Erste flatMap liefert eine List<Serializable> zweite liefert eine List<String> .

Aber sowohl Stream.of() als auch Arrays.stream() gibt <T> Stream<T> zurück (Eclipse schlägt vor, dass beide Stream<String> zurückgeben).

Und wieder verwendet Stream.of() intern (und gibt die Ausgabe von) Arrays.stream() zurück. Also, wieder, was ist falsch im ersten Fall?

    
freedev 10.01.2017, 15:00
quelle

1 Antwort

6

Dies ist ein Eclipse-Fehler

Fehler 508834 , dank @Tunaki

Beachten Sie die Methodensignaturen:

%Vor%

Nun ist es für Arrays.stream offensichtlich, dass ein Aufruf mit einem Array vom Typ T ein Stream<T> zurückgibt. Aber mit Stream.of sollte es Stream<T> oder Stream<T[]> zurückgeben? das ist der Typ der Varags; Übergeben Sie Ihr Array sind die ersten Parameter (so die Varargs sind ein Array von Arrays) oder übergeben Sie Ihr Array als alle die Parameter?

Das ist dein Problem.

    
Boris the Spider 10.01.2017, 15:04
quelle