람다식은 Java 8에서 도입된 함수형 프로그래밍을 지원하는 기능으로, 익명 함수를 간단하게 표현할 수 있습니다. 람다식을 작성하는 방법에 대해 자세히 알아보겠습니다.
람다식의 기본 문법
람다식의 기본적인 문법은 다음과 같습니다.
(parameters) -> expression
// 또는
(parameters) -> { statements; }
parameters: 메서드에 전달되는 매개변수를 나타냅니다.
->: 람다식 연산자로서, 매개변수와 표현식 또는 코드 블록을 연결합니다.
expression: 단일 표현식으로서, 람다식의 결과를 나타냅니다.
{ statements; }: 중괄호 안에 여러 문장을 포함하여 코드 블록을 나타냅니다.
예제
매개변수가 없는 경우
Runnable myRunnable = () -> System.out.println("Hello, Lambda!");
위의 예제에서 Runnable은 함수형 인터페이스로, run 메서드가 추상 메서드로 정의되어 있습니다. 이를 람다식으로 구현한 것입니다.
하나의 매개변수를 받는 경우
(x) -> x * x
이 예제에서는 정수 하나를 받아 제곱을 계산하는 람다식입니다. 매개변수의 자료형은 컴파일러가 유추할 수 있기 때문에 생략할 수 있습니다.
두 개 이상의 매개변수를 받는 경우
(x, y) -> x + y
여러 개의 매개변수가 있는 경우에는 괄호 안에 매개변수를 나열하면 됩니다.
함수형 인터페이스
람다식은 주로 함수형 인터페이스를 구현하는 데 사용됩니다. 함수형 인터페이스는 딱 하나의 추상 메서드를 갖는 인터페이스를 말합니다. 람다식은 이 추상 메서드를 구현하는 익명 객체를 생성합니다.
예를 들어, 다음은 Consumer라는 함수형 인터페이스를 구현하는 람다식의 예입니다.
Consumer<String> myConsumer = (str) -> System.out.println(str);
위의 코드에서 Consumer는 accept라는 하나의 추상 메서드를 가진 함수형 인터페이스입니다.
변수 캡처
람다식 내에서 외부의 변수를 참조할 때, 해당 변수는 final 또는 effectively final이어야 합니다. Java 8 이후에는 final 키워드를 명시하지 않아도, 해당 변수가 사실상 final인 경우에는 람다식에서 참조할 수 있습니다.
예외 처리
람다식 내에서 예외를 처리하려면 try-catch 블록을 사용하면 됩니다. 다음은 예외 처리가 포함된 람다식의 예제입니다.
MyFunctionalInterface myFunc = (a, b) -> {
try {
// 예외가 발생할 수 있는 코드
return someOperation(a, b);
} catch (SomeException e) {
// 예외 처리 코드
return defaultValue;
}
};
메서드 레퍼런스
람다식이 특정 메서드만을 호출하는 경우, 메서드 레퍼런스를 사용하여 코드를 더 간결하게 표현할 수 있습니다. 예를 들어, 정적 메서드를 호출하는 경우,
MathOperation addition = (a, b) -> Calculator.add(a, b);
// 위 람다식은 아래 메서드 레퍼런스로 대체 가능합니다.
MathOperation addition = Calculator::add;
이처럼 람다식은 코드를 간결하고 가독성 있게 만들어주지만, 사용하는 상황에 따라 적절하게 선택해야 합니다.
With ChatGPT
'JAVA > 포스팅' 카테고리의 다른 글
자바 java.util.function패키지 (0) | 2023.11.22 |
---|---|
자바 함수형 인터페이스 (0) | 2023.11.22 |
자바 람다식 (0) | 2023.11.22 |
자바 쓰레드 fork 프레임웍 (0) | 2023.11.22 |
자바 쓰레드 join 프레임웍 (0) | 2023.11.22 |