Je travaille/teste des flux dans Java8 et rencontre un problème très frustrant. J'ai le code qui compile bien:Accolades supplémentaires dans la fonction Java map()
List<String> words = Arrays.asList("Oracle", "Java", "Magazine");
List<String> wordLengths = words.stream().map((x) -> x.toUpperCase())
.collect(Collectors.toList());
et deuxième (presque le même) qui jettent un avertissement:
List<String> words = Arrays.asList("Oracle", "Java", "Magazine");
List<String> wordLengths = words.stream().map((x) -> {
x.toUpperCase();
}).collect(Collectors.toList());
Attention:
The method map(Function<? super String,? extends R>) in the type Stream<String> is not applicable for the arguments ((<no type> x) -> {})
Qu'est-ce que les crochets supplémentaires ont-ils changé?
Si vous utilisez les crochets et le type de retour du lambda n'est pas vide, vous vous fournissez le mot-clé 'return' dans le corps lambda (voir aussi https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-LambdaBody) –
ce n'est pas un 'avertissement' mais un problème de compilation, * entièrement * des choses différentes – Eugene