¿Hay alguna razón por la cual se requiere especificar el tipo de argumento en la sintaxis de Java 8 Lambda?
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