Uso básico de Lambda (comprenda la definición del código)

1. Expresión lambda

La expresión lambda es una función anónima (esto no es del todo correcto para Java, pero creo que sí por ahora), es una nueva característica de JDK1.8, en pocas palabras, es un método sin declaración, es decir, sin acceso Modificadores, declaraciones de valor de retorno y nombres.

Puede considerarlo como una abreviatura y escribirlo donde necesite utilizar un método determinado. Cuando un método se usa solo una vez, y la definición es corta, usar esta alternativa abreviada es especialmente efectivo, para que no tenga que escribir declaraciones y métodos laboriosamente en la clase.

1.1 Método de clase de implementación de parte básica

Primero observe la clase de implementación básica, generalmente defina la interfaz y tres métodos para implementar la interfaz (clase de implementación general, clase interna estática, clase interna local).

package SunLambda;
//对接口实现类进行调用。
public class Lambda_01 {
    
    
    //静态内部类
     static class ILike2 implements LambdaSun{
    
    
        @Override
        public void Lambda() {
    
    
            System.out.println("学习Lambda让我快乐!2");
        }
    }
    public static void main(String[] args) {
    
    
        ILike iLike = new ILike();
        iLike.Lambda();
        ILike2 iLike2 = new ILike2();
        iLike2.Lambda();

        //局部内部类
        class ILike3 implements LambdaSun{
    
    
            @Override
            public void Lambda() {
    
    
                System.out.println("学习Lambda让我快乐!3");
            }
        }
        ILike3 iLike3 = new ILike3();
        iLike3.Lambda();
    }
}

//定义接口
interface LambdaSun{
    
    
    void Lambda();
}

//定义接口实现类
class ILike implements LambdaSun{
    
    
    @Override
    public void Lambda() {
    
    
        System.out.println("学习Lambda让我快乐!");
    }
}

Inserte la descripción de la imagen aquí

¿Por qué usar lambda?

Utilice expresiones lambda para implementar de forma concisa una interfaz.

Requisitos de Lambda para interfaces

Solo puede haber un método abstracto definido en la interfaz que debe implementarse (debe implementarse, no modificarse por defecto).

1.2 método de construcción sin parámetros simplificado lambda

package SunLambda;

public class Lambda_02 {
    
    


    public static void main(String[] args) {
    
    
        //匿名内部类,没有类的名称,必须借助接口或者是父亲
        LambdaSun1 lambda = new LambdaSun1() {
    
    
            @Override
            public void Lambda() {
    
    
                System.out.println("学习Lambda让我快乐!5");
            }
        };
        lambda.Lambda();
        //用Lambda方法进行简化

        LambdaSun1 lambd = () ->{
    
    
                System.out.println("学习Lambda让我快乐!6");
        };
        lambd.Lambda();
        LambdaSun1 lambd1;

        //用Lambda方法进行简化简化2
        lambd1= ()-> System.out.println("学习Lambda让我快乐!7");
        lambd1.Lambda();

    }

}
//定义接口
interface LambdaSun1{
    
    
    void Lambda();
}


Inserte la descripción de la imagen aquí

Lambda implementa la interfaz y se implementa paso a paso con clases internas anónimas.

Nota:

1. La expresión lambda se puede simplificar en una línea solo si solo hay una línea de código. Si hay varias líneas, se deben usar bloques de código (es decir, {});

2. La premisa es que la interfaz es una interfaz funcional;

3. Se pueden eliminar varios tipos de parámetros de la interfaz. Si desea eliminar todos los tipos de parámetros, debe agregar paréntesis.

1.3 Método Lambda simplificado con parámetros

package SunLambda;

public class Lambda_03 {
    
    



    public static void main(String[] args) {
    
    
    //匿名内部类
        LambdaSun2 lambdasun = new LambdaSun2(){
    
    
            @Override
            public void lambda(int a,int b,int c) {
    
    
                System.out.println(a+b+c);
            }
        };
        lambdasun.lambda(1,1,1);
        LambdaSun2 lambda;
        //lambda简化1
        lambda =(int a,int b,int c)->{
    
    
            System.out.println(a+b+c);
        };
        lambdasun.lambda(2,2,2);
        //lambda简化2
        lambda =( a,b,c)->{
    
    
            System.out.println(a+b+c);
        };
        lambdasun.lambda(3,3,3);
        //lambda简化3
        lambda=( a,b,c)-> System.out.println(a+b+c);
        lambdasun.lambda(4,4,4);
    }
}
interface LambdaSun2{
    
    
    void lambda(int a,int b,int c);
}

Inserte la descripción de la imagen aquí

Nota: Se pueden eliminar varios tipos de parámetros de la interfaz. Si desea eliminarlos, puede eliminarlos, pero debe agregar paréntesis.

Autoaprendizaje en Bilibili Dios loco dijo JAVA (invasión y eliminación);

Como sus propias notas, ¡bienvenidos a todos!

Supongo que te gusta

Origin blog.csdn.net/SUN__CGJ/article/details/109406652
Recomendado
Clasificación