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