반응형
람다식은 단순히 코드 블록을 전달하는 것에서 더 나아가,
매개변수를 받아 가공하거나 출력하는 동작도 간결하게 표현할 수 있습니다.
이번 예제에서는 두 개의 함수형 인터페이스 Workable, Speakable을 사용하여
다양한 매개변수를 받는 람다식 작성 방법을 실습해 봅니다.
📦 Workable.java
package ch16.sec03;
public interface Workable {
void work(String name, String job);
}
📦 Speakable.java
package ch16.sec03;
public interface Speakable {
void speak(String content);
}
📦 Person.java
package ch16.sec03;
public class Person {
public void action(Workable workable) {
workable.work("홍길동", "프로그래밍");
}
public void action2(Speakable speakable) {
speakable.speak("안녕하세요");
}
}
📌 예제 코드
package ch16.sec03;
public class LambdaExample {
public static void main(String[] args) {
Person person = new Person();
// 이름과 직업을 받아 출력
person.action((name, job) -> {
System.out.print(name + "이 ");
System.out.println(job + "을 합니다.");
});
// 매개변수 이름을 간단히 줄여 사용
person.action((n, j) -> System.out.println(n + "이 " + j + "을 안 합니다."));
// 한 개의 문자열을 받아 말하기
person.action2(word -> {
System.out.print("\"" + word + "\"");
System.out.println("라고 말합니다.");
});
// 단일 매개변수의 간단한 출력
person.action2(w -> System.out.println("\"" + w + "\"" + "라고 외칩니다."));
}
}
💻 실행 결과
홍길동이 프로그래밍을 합니다.
홍길동이 프로그래밍을 안 합니다.
"안녕하세요"라고 말합니다.
"안녕하세요"라고 외칩니다.
💬 코드 설명
- Workable 인터페이스는 work(String name, String job) 메서드를 가지며,
두 개의 문자열 매개변수를 전달받습니다. - Speakable 인터페이스는 speak(String content) 메서드를 가지며,
한 개의 문자열 매개변수를 전달받습니다. - LambdaExample 클래스에서는 각각의 action(), action2() 메서드에
람다식을 전달하여 동작을 주입합니다. - 람다식은 매개변수 이름을 자유롭게 정의할 수 있으며,
여러 줄인 경우에는 {} 블록을 사용하고, 한 줄이면 생략할 수도 있습니다.
💡 포인트 정리
- 람다식은 매개변수 개수에 따라 (매개변수1, 매개변수2) -> { ... } 형태로 작성합니다.
- 매개변수가 하나인 경우에는 괄호 ()도 생략 가능합니다.
- 전달받은 매개변수를 가공하거나 출력하는 등의 동작을 람다식 안에서 유연하게 구현할 수 있습니다.
- 함수형 인터페이스를 다양하게 정의함으로써,
특정 구조에 맞춘 람다식을 설계할 수 있는 유연성이 높아집니다.
📌정리하자면, 이번 예제는 함수형 인터페이스에 다양한 형태의 매개변수를 전달하고 활용하는 람다식 작성법을 실습해 보았습니다.
람다식은 단순 반복 작업뿐 아니라, 전달인자를 받아 가공하는 동작에도 매우 유용하며,
코드를 간결하고 읽기 쉽게 구성하는 데 큰 도움이 됩니다.
'Java > 자바 정리' 카테고리의 다른 글
159. 메서드 참조 – 문자열 비교에 활용하기 (0) | 2025.05.22 |
---|---|
158. 메서드 참조(Method Reference) – 람다식을 간결하게 대체하기 (0) | 2025.05.22 |
157. 람다식에서 리턴값 처리하기 – 반환형 함수형 인터페이스 (0) | 2025.05.22 |
155. 람다식으로 이벤트 처리하기 – 버튼 클릭 리스너 구현 (1) | 2025.05.22 |
154. 매개변수로 람다식 전달하기 – 단일 추상 메서드 구조 (0) | 2025.05.22 |
153. 람다식 기초 사용법 – 함수형 인터페이스와 람다 전달 (0) | 2025.05.22 |