자바 람다 표현식
자바 람다 표현식
람다 표현식은 Java 8에 추가되었습니다.
람다 표현식은 매개변수를 받아 값을 반환하는 짧은 코드 블록입니다. 람다 표현식은 메서드와 유사하지만 이름이 필요하지 않으며 메서드 본문에서 바로 구현할 수 있습니다.
통사론
가장 단순한 람다 표현식에는 단일 매개변수와 표현식이 포함됩니다.
parameter -> expression
둘 이상의 매개변수를 사용하려면 괄호로 묶습니다.
(parameter1, parameter2) -> expression
표현이 제한적입니다. 즉시 값을 반환해야 하며 변수, 할당 또는 또는 같은 문을 포함할 수 if
없습니다 for
. 더 복잡한 작업을 수행하기 위해 코드 블록을 중괄호와 함께 사용할 수 있습니다. 람다 식이 값을 반환해야 하는 경우 코드 블록에 문이 있어야 합니다 return
.
(parameter1, parameter2) -> { code block }
람다 표현식 사용
람다 표현식은 일반적으로 함수에 매개변수로 전달됩니다.
예시
ArrayList
목록의 모든 항목을 인쇄하려면 's forEach()
메소드 에서 람바 표현식을 사용하십시오 .
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
numbers.forEach( (n) -> { System.out.println(n); } );
}
}
변수 유형이 메서드가 하나만 있는 인터페이스인 경우 람다 표현식을 변수에 저장할 수 있습니다. 람다 식에는 해당 메서드와 동일한 수의 매개 변수와 동일한 반환 유형이 있어야 합니다. Consumer
Java에는 목록에서 사용하는 인터페이스( java.util
패키지에 있음) 와 같은 많은 종류의 인터페이스가 내장되어 있습니다.
예시
Java Consumer
인터페이스를 사용하여 변수에 람다 식을 저장합니다.
import java.util.ArrayList;
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
Consumer<Integer> method = (n) -> { System.out.println(n); };
numbers.forEach( method );
}
}
메서드에서 람다 식을 사용하려면 메서드에 단일 메서드 인터페이스가 있는 매개 변수가 형식으로 있어야 합니다. 인터페이스의 메서드를 호출하면 람다 표현식이 실행됩니다.
예시
람다 식을 매개변수로 사용하는 메서드를 만듭니다.
interface StringFunction { String run(String str);
}public class Main { public static void main(String[] args) { StringFunction exclaim = (s) -> s + "!"; StringFunction ask = (s) -> s + "?"; printFormatted("Hello", exclaim); printFormatted("Hello", ask);
}public static void printFormatted(String str, StringFunction format) { String result = format.run(str); System.out.println(result);
}}