JAVA · 람다/메서드
SAM 변환과 함수형 프로그래밍
Single Abstract Method 인터페이스와 람다 변환 원리를 이해합니다.
람다/메서드고급SAM함수형인터페이스람다변환Runnable
핵심 설명
Single Abstract Method 인터페이스와 람다 변환 원리를 이해합니다.
Java code
import java.util.concurrent.*;
public class SAMConversion {
// SAM 인터페이스 — 추상 메서드가 정확히 1개
@FunctionalInterface
interface Transformer<T> {
T transform(T input);
}
// SAM 변환: 람다 -> 인터페이스 인스턴스
static <T> T apply(T value, Transformer<T> t) {
return t.transform(value);
}
public static void main(String[] args) {
// 람다로 SAM 변환
String result = apply("hello", String::toUpperCase);
System.out.println(result); // HELLO
// Runnable — SAM 인터페이스
Runnable task = () -> System.out.println("실행");
new Thread(task).start();
// Callable — SAM 인터페이스
Callable<Integer> calc = () -> 42;
// Comparator — SAM 인터페이스 (equals 제외)
java.util.List<String> list = new java.util.ArrayList<>(
java.util.List.of("banana", "apple", "cherry"));
list.sort(String::compareTo);
System.out.println(list);
// 기존 익명 클래스 -> 람다 변환
// 기존: new Runnable() { public void run() { ... } }
// 변환: () -> { ... }
}
}학습 팁
SAM 변환은 @FunctionalInterface 어노테이션 없이도 동작합니다. 다만 어노테이션을 붙이면 컴파일러가 검증해줍니다.
주의할 점
추상 메서드가 2개 이상인 인터페이스에는 람다를 사용할 수 없습니다. 익명 클래스를 사용해야 합니다.
자주 묻는 질문
SAM 변환과 함수형 프로그래밍란 무엇인가요?
Single Abstract Method 인터페이스와 람다 변환 원리를 이해합니다.
SAM 변환과 함수형 프로그래밍 학습 시 주의할 점은 무엇인가요?
추상 메서드가 2개 이상인 인터페이스에는 람다를 사용할 수 없습니다. 익명 클래스를 사용해야 합니다.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.