JDK8--03: sintaxis de las expresiones lambda

Para las expresiones básicas de gramática lambda, se trata de entender las expresiones básicas de gramática lambda, y la otra es la necesidad de entender la interfaz de la función

A, las expresiones lambda describir la gramática básica

  introduce java8 nuevo operador ->, se puede llamar operador lambda o el operador de flecha, el operador estará dividida en dos partes expresión lambda.

  Izquierda: lista de parámetros

  Derecha: expresiones de código a ejecutar, que es el cuerpo lambda

  lambda formato general son los siguientes:

  La primera: no hay parámetros y no devuelve nada

  La segunda: Hay parámetros, sin valor de retorno

    Variante 1: el argumento de tipo se puede omitir

    Variante 2: Existe un parámetro, el parámetro se puede omitir paréntesis

  Tercero: No hay parámetros, valor de retorno

    Variantes: declaración lambda cuerpo ejecución es único, se puede prescindir de los apoyos y de retorno del cuerpo lambda

Dos, muestra de expresiones lambda

  1, una expresión, no hay parámetros y no devuelve ningún valor

/ * * 
     * Lambda表达式一
     * / 
    público  vacío test1 () {
         // jdk1.7之前 
        Ejecutable ejecutable = nueva Ejecutable () { 
            @ Override 
            pública  vacío run () { 
                Sistema. fuera .print ( " hola Ejecutable " ); 
            } 
        }; 
        runnable.run (); 

        Sistema. fuera .println ( " ============================= " ); 

        // 使用lambda表达式 
        Ejecutable runnable1 = () -> Sistema. fuera.println ( " lambda hola " ); 
        runnable1.run (); 
    }

  2, dos expresiones: No hay parámetros y no devuelve valor

pública  vacío test2 () { 
        Comparador <Integer> = comparador (entero x, Entero y) -> Integer.compare (x, y); 
    }

    Variante 1: el tipo de parámetro se puede omitir (esto se debe a que el compilador JVM puede inferirse del contexto del tipo en tiempo de compilación, para deducir el tipo de salida argumento; otra aquí y no tienen que ser omitidos se omiten, y algunos parámetros no se puede omitir, existe parámetro no se omite)

pública  vacío test3 () { 
        Comparador <Integer> comparador = (x, y) -> Integer.compare (x, y); 
    }

    Variante 2: Existe un parámetro, el parámetro se puede omitir paréntesis

    pública  vacío test4 () { 
        Consumidor <String> consumidor = x -> Sistema. fuera .println (x); 
        consumer.accept ( " Hola " ); 
    }

  Tercero: No hay parámetros, valor de retorno

    pública  vacío test5 () { 
        Comparador <Integer> = comparador (entero x, Entero y) -> { 
            log.info ( " test5 hola " );
            retorno Integer.compare (x, y); 
        }; 
    }

    Variantes: lambda cuerpo para llevar a cabo una sola declaración, usted puede regresar y tirantes cuerpo lambda omitido (de hecho, esto ya se ha demostrado, un tipo de la segunda variante)

pública  vacío test3 () { 
        Comparador <Integer> comparador = (x, y) -> Integer.compare (x, y); 
    }

resumen:

  En caso de los paréntesis de la provincia

  Izquierdo de la inferencia de tipos Provincia

En tercer lugar, la función de interfaz

  expresión lambda tiene que soportar la interfaz funcional, una interfaz de función de interfaz que es sólo una aplicación. Las anotaciones pueden ser utilizados para la prueba @FunctionalInterface

En cuarto lugar, la función de interfaz de la muestra (java8 ofrece cuatro funciones de interfaz de núcleo, el seguimiento se describirá)

  Crear una interfaz de función

com.example.jdk8demo.lambda empaquetar; 

@FunctionalInterface 
pública  interfaz MyInterface { 
    Entero getInteger (entero i); 
}

  Nuevas llamadas a métodos de interfaz de función

    pública Entero getInteger (entero i, MyInterface mi) {
         volver mi.getInteger (i); 
    }

  El último paso consiste en expresiones lambda uso de lógica de aplicación específica

    pública  vacío test6 () {
         // obtener 10 cuadrados 
        log.info ( " ============ " + getInteger ( 10 , (X) -> X * X)); 
    }

 

Supongo que te gusta

Origin www.cnblogs.com/liconglong/p/12452913.html
Recomendado
Clasificación