El uso de expresiones lambda en interfaces funcionales

1. ¿Qué es una interfaz funcional?

La llamada interfaz funcional (Functional Interface) es que la interfaz actual solo puede contener un método abstracto para ser implementado; cuando se trata de interfaz funcional, es necesario hablar de una anotación @FunctionalInterface , que es una anotación vacía, utilizada principalmente para compilación Comprobación de errores de nivel , más esta anotación, cuando la interfaz que escribe no se ajusta a la definición de interfaz funcional, el compilador informará un error. Aquí hay algunos ejemplos:
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
A partir de lo anterior, se puede ver que si hay más de uno o ningún método abstracto para implementar en la interfaz, no se ajusta a la definición de una interfaz funcional. Cuando se agrega la anotación @FunctionalInterface, habrá un mensaje fuera de formato. Si necesita proporcionar otros métodos en la interfaz funcional, puede utilizar el método predeterminado para proporcionarlos después de jdk1.8.

2. Utilice expresiones Lambda para implementar interfaces funcionales

Las interfaces funcionales son las siguientes:

@FunctionalInterface
public interface LambdaEx1 {
    
    
	Integer calculate(Integer a,Integer b);
}

El uso de la interfaz es el siguiente:

	// 在jdk1.8之前使用匿名内部类
	public static void main(String[] args) {
    
    
		LambdaEx1 lambdaEx=new LambdaEx1() {
    
    
			@Override
			public Integer calculate(Integer a, Integer b) {
    
    
				return Math.addExact(a, b);
			}
		};
		System.out.println(lambdaEx.calculate(10, 20));
	}
	// 在jdk1.8之后使用lambda表达式
	public static void main(String[] args) {
    
    
		LambdaEx1 lambdaEx1=(val1,val2)->{
    
    
			return Math.addExact(val1, val2);		
		};
		System.out.println(lambdaEx1.calculate(10,20));
	}

Nota:
    Solo las interfaces funcionales pueden usar expresiones lambda, no se pueden usar otras interfaces o métodos. En el proceso de desarrollo diario, existen muchos ejemplos de interfaces funcionales que utilizan expresiones lambda, como la implementación del método ** forEach () ** en la interfaz del mapa; la implementación del método run en multiproceso, etc.

Supongo que te gusta

Origin blog.csdn.net/qgnczmnmn/article/details/108669710
Recomendado
Clasificación