Utilisation de base de Lambda (comprendre la définition à partir du code)

1. Expression Lambda

L'expression Lambda est une fonction anonyme (ce n'est pas tout à fait correct pour Java, mais je pense que oui pour l'instant), est une nouvelle fonctionnalité de JDK1.8, en termes simples, c'est une méthode sans déclaration, c'est-à-dire sans accès Modificateurs, déclarations de valeur de retour et noms.

Vous pouvez le considérer comme un raccourci et l'écrire là où vous devez utiliser une certaine méthode. Lorsqu'une méthode n'est utilisée qu'une seule fois et que la définition est courte, l'utilisation de cette alternative abrégée est particulièrement efficace, afin que vous n'ayez pas à écrire laborieusement des déclarations et des méthodes dans la classe.

1.1 Méthode de classe d'implémentation de partie de base

Examinez d'abord la classe d'implémentation de base, définissez généralement l'interface et trois méthodes d'implémentation de l'interface (classe d'implémentation générale, classe interne statique, classe interne locale).

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让我快乐!");
    }
}

Insérez la description de l'image ici

Pourquoi utiliser lambda?

Utilisez des expressions lambda pour implémenter de manière concise une interface.

Exigences Lambda pour les interfaces

Il ne peut y avoir qu'une seule méthode abstraite définie dans l'interface qui doit être implémentée (doit être implémentée et non modifiée par défaut).

1.2 Méthode de construction simplifiée sans paramètre 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();
}


Insérez la description de l'image ici

Lambda implémente l'interface et est implémentée étape par étape avec des classes internes anonymes.

Remarque:

1. L'expression Lambda ne peut être simplifiée en une seule ligne que s'il n'y a qu'une seule ligne de code. S'il y a plusieurs lignes, des blocs de code (c'est-à-dire {}) doivent être utilisés;

2. Le principe est que l'interface est une interface fonctionnelle;

3. Plusieurs types de paramètres de l'interface peuvent être supprimés. Si vous souhaitez supprimer tous les types de paramètres, vous devez ajouter des parenthèses.

1.3 Méthode simplifiée Lambda avec paramètres

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);
}

Insérez la description de l'image ici

Remarque: plusieurs types de paramètres de l'interface peuvent être supprimés. Si vous souhaitez les supprimer, vous pouvez les supprimer, mais vous devez ajouter des parenthèses.

Auto-apprentissage en Bilibili Mad God dit JAVA (invasion et suppression);

Comme vos propres notes, bienvenue à tous!

Je suppose que tu aimes

Origine blog.csdn.net/SUN__CGJ/article/details/109406652
conseillé
Classement