
자바 중급 문법 – 람다식 – 0 – 함수형 인터페이스
소제목: 함수형 인터페이스란?
함수형 인터페이스(Functional Interface)는 자바 8부터 도입된 개념으로, 단 하나의 추상 메서드를 가지는 인터페이스를 말합니다. 함수형 인터페이스는 람다식과 함께 사용되어 함수형 프로그래밍 스타일을 지원하며, 주로 함수 객체를 쉽게 생성하기 위해 사용됩니다. 함수형 인터페이스는 @FunctionalInterface 어노테이션을 사용하여 명시할 수 있습니다.
예시로, Runnable
인터페이스는 함수형 인터페이스의 한 예입니다. Runnable
은 void run()
이라는 하나의 추상 메서드를 가지고 있으며, 이를 구현하는 객체는 실행 가능한 코드 블록을 담고 있습니다. 람다식을 사용하여 Runnable
인터페이스를 구현할 수 있습니다.
Runnable runnable = () -> {
System.out.println("Hello, world!");
};
위의 예시에서 () -> { ... }
부분이 람다식으로, run()
메서드를 구현한 것과 같은 효과를 갖습니다. 이렇게 함수형 인터페이스와 람다식을 활용하면 코드를 간결하고 읽기 쉽게 작성할 수 있습니다.
소제목: 람다식의 비유적 표현
람다식을 비유적으로 표현하자면, 람다식은 자바 프로그래밍에서 “간편한 요리 레시피”라고 할 수 있습니다. 요리 레시피는 각 요리의 조리 방법을 담고 있는데, 람다식은 코드의 실행 방법을 담고 있는 것입니다. 람다식은 일종의 익명 함수로, 필요한 인자를 받아 실행 코드를 실행하는 역할을 합니다.
요리 레시피에서는 각각의 요리마다 재료와 조리 방법이 정해져 있듯이, 람다식도 함수형 인터페이스의 추상 메서드와 그에 따른 실행 코드로 구성됩니다. 레시피에서 어떤 재료를 어떻게 다듬고 어떻게 조리하는지에 따라 요리의 맛과 특성이 달라지는 것처럼, 람다식에서도 인자와 실행 코드의 구성에 따라 다양한 동작을 할 수 있습니다.
소제목: 함수형 인터페이스와 람다식의 활용
함수형 인터페이스와 람다식은 자바 프로그래밍에서 많은 곳에서 활용됩니다. 예를 들어, GUI 프로그래밍에서 이벤트 처리를 위해 많이 사용됩니다. 이벤트 핸들러는 함수형 인터페이스로 구현되며, 람다식을 통해 간편하게 이벤트 처리 코드를 작성할 수 있습니다.
button.addActionListener(event -> {
System.out.println("Button clicked!");
});
위의 예시에서는 버튼이 클릭되었을 때 실행되는 이벤트 핸들러를 람다식으로 작성한 것입니다. 람다식을 사용하면 익명 클래스를 생성하지 않고도 간결한 코드로 이벤트 처리를 할 수 있습니다.
또한, 스레드를 다루는 멀티스레드 프로그래밍에서도 람다식이 유용하게 사용됩니다. Runnable
인터페이스나 Callable
인터페이스 등을 구현하는 객체를 람다식으로 간단하게 작성하여 스레드를 생성하고 실행할 수 있습니다.
Thread thread = new Thread(() -> {
System.out.println("Thread is running!");
});
thread.start();
위의 예시에서는 Runnable
인터페이스를 구현하는 객체를 람다식으로 작성하여 스레드를 생성한 것입니다. 람다식을 사용하면 스레드 실행 코드를 간결하게 작성할 수 있습니다.
주의해야 할 점
- 함수형 인터페이스는 하나의 추상 메서드를 가져야 합니다. 두 개 이상의 추상 메서드가 있는 인터페이스를 함수형 인터페이스로 사용하려고 하면 컴파일 오류가 발생합니다.
@FunctionalInterface
어노테이션은 선택적으로 사용할 수 있지만, 명시적으로 표현함으로써 해당 인터페이스가 함수형 인터페이스임을 명확하게 할 수 있습니다.- 함수형 인터페이스는 기존의 인터페이스도 포함하여 사용할 수 있습니다. 예를 들어, 자바에서 제공하는
Comparator
인터페이스도 함수형 인터페이스로 사용될 수 있습니다.
자바 중급 문법 – 람다식 – 0 – 함수형 인터페이스에 대해 소개했습니다. 함수형 인터페이스는 람다식과 함께 자바 프로그래밍에서 강력하게 사용되는 개념입니다. 함수형 인터페이스와 람다식을 통해 코드를 간결하고 읽기 쉽게 작성할 수 있으며, 이벤트 처리나 멀티스레드 프로그래밍 등 다양한 분야에서 유용하게 활용됩니다.
다만, 주의해야 할 점으로는 함수형 인터페이스는 하나의 추상 메서드를 가져야 하고, @FunctionalInterface
어노테이션을 명시적으로 사용할 수 있습니다. 또한, 기존의 인터페이스도 함수형 인터페이스로 활용할 수 있습니다.
함수형 인터페이스와 람다식을 적재적소에 활용하여 자바 프로그래밍을 더욱 효율적이고 간결하게 만들어보세요!
[자바, 중급, 문법, 람다식, 0, 함수형 인터페이스]