Y a-t-il des raisons pour lesquelles la spécification du type d'argument est requise dans la syntaxe de Java 8 Lambda?

StackOverflow https://stackoverflow.com/questions/8907505

  •  29-10-2019
  •  | 
  •  

Question

J'ai lu http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html et a remarqué que tous les exemples ont un type d'argument déclaré explicitement, même s'il est déjà connu dans la déclaration d'interface-fonction.

public interface FileFilter {
    /** ... **/
    boolean accept(File pathname);
}


FileFilter java = (File f) -> f.getName().endsWith(".java");

Ne pouvons-nous pas aller avec juste

(f) -> f.getName().endsWith(".java"); ?

METTRE À JOUR: Dans le Draft JSR-335, J'ai constaté que les paramètres de type déduit sont plus susceptibles d'être pris en charge

(int x) -> x+1 // Single declared-type parameter
(int x) -> { return x+1; } // Single declared-type parameter
(x) -> x+1 // Single inferred-type parameter
x -> x+1 // Parens optional for single inferred-type case 

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top