Il seguente codice funziona bene in tutti i compilatori java in linea, ma eclissi genera errore del compilatore. È un bug in eclissi o mi mancano alcune impostazioni da qualche parte? Una semplice soluzione per silenziare eclissi? online: https://ideone.com/l0bbhz. Nota: questo è un esempio semplificato semplificato per indicare solo il problema. Capisco che flatMap
non è necessario in questo caso. Nel caso concreto, ho davvero bisogno flatMap
Eclipse non può inferire il tipo corretto dal flusso java 8
package dummy;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static java.util.stream.Collectors.toList;
public class LearnJava {
public static void main(String[] args) {
String[] sa = {"ne", "two", "three"};
List<String> l = Arrays.stream(sa)
.flatMap(s -> Collections.singleton(s).stream().map(c -> c.toUpperCase()))
.collect(toList());
System.out.println(l.get(0));
}
}
Errore nella console Eclipse.
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from List<Object> to List<String>
at dummy.LearnJava.main(LearnJava.java:13)
La mia versione di Eclipse:
Eclipse IDE Java EE per gli sviluppatori web.
Versione: Luna Service Release 2 (4.4.2) Corporatura ID: 20150219-0600
Aggiornamento: Sono andato con questa soluzione minore. Funziona senza importanti refactoring!
.flatMap(s -> Collections.singleton(s).stream().map(c -> c.toUpperCase()))
Per
.<String>flatMap(s -> Collections.singleton(s).stream().map(c -> c.toUpperCase()))
Non so quale tipo di eclissi si sta utilizzando ma tutto funziona con me qui su eclipse Neon. Penso che potresti avere alcune impostazioni –
Eclipse non usa il compilatore Java standard fornito con Oracle JDK; sembra che il compilatore di Eclipse abbia avuto [alcuni tipi di problemi di inferenza] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=434483) in passato, quindi assicurati di utilizzare un aggiornamento versione – oldrinb
Posso confermare questo comportamento. Sto usando Eclipse Mars.2 e JDK 1.8.0_92. – Turing85