Java 8에서 도입된 Lambda Expressions와 Functional Interface는 코드를 간결하게 작성하고, 함수형 프로그래밍 스타일을 Java에 도입하는 데 중요한 역할을 했습니다. 이 블로그에서는 Lambda Expressions와 Functional Interface의 개념, 사용법, 그리고 주요 활용법에 대해 알아 보겠습니다.
1. Lambda Expressions란?
Lambda Expressions는 익명 함수(Anonymous Function)를 작성할 수 있는 간결한 방법입니다. 메서드를 하나의 식(expression)으로 표현할 수 있어, 코드의 가독성과 유지보수성을 크게 향상시킵니다.
문법 형식
(parameters) -> { body }
예제
(int a, int b) -> { return a + b; } // 매개변수와 본문 포함
x -> x * x // 매개변수가 하나일 때 괄호 생략 가능
() -> System.out.println("Hello, Lambda!") // 매개변수가 없는 경우
2. Functional Interface란?
Functional Interface는 단 하나의 추상 메서드만 가지는 인터페이스입니다. Lambda Expressions는 Functional Interface를 구현하는 데 사용됩니다.
대표적인 Functional Interface:
run()
메서드 포함 합니다.call()
메서드 포함 합니다.compare()
메서드 포함 합니다.예
@FunctionalInterface
public interface MyFunctionalInterface {
void execute();
}
3. Lambda Expressions와 Functional Interface 사용법
@FunctionalInterface
interface Calculator {
int operate(int a, int b);
}
public class LambdaExample {
public static void main(String[] args) {
// Lambda Expression으로 구현
Calculator add = (a, b) -> a + b;
Calculator multiply = (a, b) -> a * b;
System.out.println("Addition: " + add.operate(5, 3));
System.out.println("Multiplication: " + multiply.operate(5, 3));
}
}
출력
Addition: 8
Multiplication: 15
java.util.function
패키지에 다양한 Functional Interface를 제공합니다. Predicate<Integer> isEven = x -> x % 2 == 0;
System.out.println(isEven.test(4)); // true
Consumer<String> print = s -> System.out.println(s);
print.accept("Hello, Consumer!");
Function<String, Integer> length = s -> s.length();
System.out.println(length.apply("Lambda")); // 6
Supplier<Double> randomValue = () -> Math.random();
System.out.println(randomValue.get());
import java.util.*;
public class CollectionExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// forEach와 Lambda 사용
names.forEach(name -> System.out.println(name));
// Stream API와 함께 사용
names.stream()
.filter(name -> name.startsWith("A"))
.forEach(System.out::println);
}
}
출력
Alice
Bob
Charlie
Alice
4. Lambda Expressions와 Functional Interface의 장점
5. Lambda Expressions와 Functional Interface 활용 사례
button.addActionListener(e -> System.out.println("Button clicked!"));
new Thread(() -> System.out.println("Thread running")).start();
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<Integer> nameLengths = names.stream()
.map(name -> name.length())
.toList();
System.out.println(nameLengths); // [5, 3, 7]
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
.filter(n -> n % 2 == 0)
.forEach(System.out::println); // 2, 4
결론
Lambda Expressions와 Functional Interface는 Java 프로그래밍에서 생산성과 가독성을 높이는 데 중요한 역할을 합니다. Java의 함수형 프로그래밍 기능을 적극 활용하여 코드를 더 간결하고 효율적으로 작성해 보시길 바랍니다. 특히, Stream API와 결합하여 대규모 데이터 처리와 병렬 프로그래밍을 손쉽게 구현할 수 있습니다.
다음 블로그에서는 Java에서의 String 처리에서 성능 최적화와 효율적인 사용 방법에 대해 알아 보겠습니다. 감사합니다.
일상에서 벗어나 진정한 휴식을 꿈꾼다면, 일본 하코네 온천 료칸만큼 매력적인 여행지도 드물 것입니다. 하지만 검색만…
디즈니랜드 여행을 앞두고 가장 중요한 고민 중 하나는 바로 “숙소 선택”입니다. 꿈같은 하루를 선물하고 싶은…
스이카 카드 발급 해야하는 이유 "도쿄 지하철 정복은 스이카 카드 없으면 절대 불가능합니다!" "이 카드…
리버 크루즈를 타야만 하는 이유 "오사카 여행에서 낮에는 활기찬 거리, 밤에는 화려한 네온사인으로 물든 도시를…
오사카 여행에 필수적인 교통패스인 오사카 교통패스에 대해 소개 하겠습니다. 일본 오사카 여행을 준비 중이시라면, 효율적인…
후쿠오카는 일본 여행지 중에서도 근교 여행지와 맛집, 쇼핑, 자연 풍경, 도시를 한 번에 즐길 수…