util functional example java lambda java-8 functional-interface

functional - Ejecución de Java 8 lambdas



java 8 supplier (1)

Según la sección 15.27 de JLS:

Es un error en tiempo de compilación si una expresión lambda ocurre en un programa en un lugar que no sea un contexto de asignación (§5.2), un contexto de invocación (§5.3) o un contexto de conversión (§5.5).

También es posible usar una expresión lambda en una declaración de return .

Entonces podemos reescribir su ejemplo de cuatro maneras diferentes:

  • Al crear un contexto de asignación:

    Function<Boolean, Boolean> function = p -> p; boolean x = function.apply(true);

  • Al crear un contexto de invocación:

    foobar(p -> p); private static void foobar(Function<Boolean, Boolean> function) { boolean x = function.apply(true); }

  • Al crear un contexto de lanzamiento:

    boolean x = ((Function<Boolean, Boolean>) p -> p).apply(true);

  • Usando una declaración de return :

    boolean x = function().apply(true); private static Function<Boolean, Boolean> function() { return p -> p; }

Además, en este ejemplo simple, toda la expresión lambda puede reescribirse como sigue:

UnaryOperator<Boolean> function = UnaryOperator.identity();

¿Cómo puedo hacer algo como esto en Java 8?

boolean x = ((boolean p)->{return p;}).apply(true);

En este momento me sale el siguiente error:

El tipo de destino de esta expresión debe ser una interfaz funcional