Java/자바 정리

156. 람다식으로 매개변수 전달받기 – 다양한 함수형 인터페이스 실습

코딩하는냥이 2025. 5. 22. 11:55
반응형

람다식은 단순히 코드 블록을 전달하는 것에서 더 나아가,
매개변수를 받아 가공하거나 출력하는 동작도 간결하게 표현할 수 있습니다.
이번 예제에서는 두 개의 함수형 인터페이스 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) -> { ... } 형태로 작성합니다.
  • 매개변수가 하나인 경우에는 괄호 ()도 생략 가능합니다.
  • 전달받은 매개변수를 가공하거나 출력하는 등의 동작을 람다식 안에서 유연하게 구현할 수 있습니다.
  • 함수형 인터페이스를 다양하게 정의함으로써,
    특정 구조에 맞춘 람다식을 설계할 수 있는 유연성이 높아집니다.

📌정리하자면, 이번 예제는 함수형 인터페이스에 다양한 형태의 매개변수를 전달하고 활용하는 람다식 작성법을 실습해 보았습니다.
람다식은 단순 반복 작업뿐 아니라, 전달인자를 받아 가공하는 동작에도 매우 유용하며,
코드를 간결하고 읽기 쉽게 구성하는 데 큰 도움이 됩니다.