Java 기본 사항 -Lambda 표현식

Lambda 식 개요

클로저라고도하는 Lambda 표현식 Java 8 릴리스 를 촉진하는 가장 중요한 새 기능 입니다 .
Lambda에서는 함수를 메서드 매개 변수로 사용할 수 있습니다 (함수는 매개 변수로 메서드에 전달됨) .
Lambda 표현식을 사용하면 코드를 더 간결하고 간결하게 만들 수 있습니다.
Lamda 표현식은 함수형 프로그래밍 이라고도 합니다 .
예 : y = kx + 1; f (x) = kx + 1; 이것은 수학 함수입니다. x가 주어지면 y 값을 얻을 수 있습니다.
Lambda 표현식은 인터페이스 지향 및 인터페이스 지향 프로그래밍입니다. 기능 지향 프로그래밍을 위해서는 인터페이스 지향 원칙에 따라 기능 인터페이스정의 할 필요가 있습니다 .

Lambda 표현식 구문

익명 내부 클래스를 사용하여 인터페이스 구현

(parameters) -> expression
或
(parameters) ->{
    
     statements; }

람다 식 케이스

interface Fooi{
    
    
	public void sayHello();
}
public class LambdaTest {
    
    
	public static void main(String[] args) {
    
    
		//接口不能new,使用匿名内部类
		Fooi foo = new Fooi(){
    
    
			@Override
			public void sayHello() {
    
    
				// TODO Auto-generated method stub		
				System.out.println("hello 2004");
			}	
		};
		foo.sayHello();
	}
}

여기에 사진 설명 삽입
여기에있는 프로그램은 원래 한 줄에 불과하지만 너무 많이 작성되었습니다. 프로그램 개발의 효율성을 줄입니다.
어떻게 최적화 할 수 있습니까?
람다 표현식은 익명의 내부 클래스 코드 중복 현상을 해결하기위한 것으로,
이 인터페이스에는 메서드가 하나 뿐인 것을 알 수 있으며,이 인터페이스를 구현하고자 할 때 하나의 메서드 만 구현되어 있습니다. 즉, 지정하지 않고도 어떤 방법인지 알 수 있습니다.
람다 식 공식 : 괄호 복사, 오른쪽 화살표 기록, 랜딩 중괄호

interface Fooi{
    
    
	public void sayHello();
}
public class LambdaTest {
    
    
	public static void main(String[] args) {
    
    
		Fooi foo=() -> {
    
    System.out.println("hello 1205");};
		foo.sayHello();
	}
}

여기에 사진 설명 삽입
뒤에있는 코드는 두 줄뿐입니다. 개발 효율성이 크게 향상되었습니다.
현재 여러 방법이있는 경우에도 계속 사용할 수 있습니까?

interface Fooi{
    
    
	public void sayHello();
	public int add(int x,int y);
}
public class LambdaTest {
    
    
	public static void main(String[] args) {
    
    
		Fooi foo=()->{
    
    System.out.println("hello 1205");};
		foo.sayHello();
	}
}

이때 프로그램은 오류를보고합니다.

여기에 사진 설명 삽입
Lambda 표현식을 사용하기 위해 함수 인터페이스에서 하나의 메서드 만 구현할 수 있음을 알 수 있습니다.
반환 값이있는 매개 변수가있는 경우 사용할 수 있습니까?

interface Fooi{
    
    
	public int add(int x,int y);
}
public class LambdaTest {
    
    
	public static void main(String[] args) {
    
    
		Fooi foo=(int x,int y)->{
    
    
			return x+y;
		};
		System.out.println(foo.add(3,5));
	}
}

여기에 사진 설명 삽입
메서드에 매개 변수가 있고 반환 값도 Lambda 표현식을 사용할 수 있음을 알 수 있습니다.

인터페이스가 기능적 인터페이스인지 확인하는 방법은 무엇입니까?
@FunctionalInterface 주석

사용 하여 인터페이스에 두 가지 메서드를 추가하면 오류가보고됩니다. 그림이 보여 주듯이 :

@FunctionalInterface;
interface Fooi{
    
    
	public int add(int x,int y);
	public void sale();
}

여기에 사진 설명 삽입
이때 오류가보고됩니다.
인터페이스에 구현되지 않은 메서드가 하나만 있지만이 주석이 추가되지 않은 경우 Java는이 주석을 인터페이스에 암시 적으로 추가합니다. 인터페이스
에 두 개의 메서드가 있고 FunctionalInterface 주석이 정의 된 경우 예외를보고합니다.

Lambda 표현식 요약

Lambda 표현식 공식 : 괄호를 복사하고 오른쪽 화살표를 적어
두고 @FunctionalInterface 주석을 사용합니다.

추천

출처blog.csdn.net/qq_39736597/article/details/111999982