¿Hay alguna razón por la cual se requiere especificar el tipo de argumento en la sintaxis de Java 8 Lambda?

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

  •  29-10-2019
  •  | 
  •  

Pregunta

he leído http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html y noté que todos los ejemplos tienen el tipo de argumento declarado explícitamente, a pesar de que ya se conoce por la declaración de interfaz-función.

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


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

¿No podemos ir solo con

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

ACTUALIZAR: En el Draft JSR-335, He descubierto que los parámetros de tipo inferido tienen más probabilidades de ser compatibles

(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 

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top