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