# 함수형 인터페이스 (Functional Interface)
함수형 인터페이스는 람다 표현식과 메서드 참조를 활용해 더 간결하고 읽기 쉬운 코드를 작성하는 데 중요한 역할을 합니다.
자주 사용하는 함수형 인터페이스인 Consumer
Function
Predicate
Supplier
Runnable
에 대해 설명하고, 각각의 예시 코드를 정리하고자 합니다.
# Consumer
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
Consumer
은 T 타입의 입력값 하나를 받으며 리턴값은 없습니다.
accept 메서드를 호출하여 정의된 작업을 수행합니다.
주로 출력을 하는 데 사용됩니다.
[ 예시 코드 ]
Consumer<String> printMessage = message -> System.out.println("Message: " + message);
printMessage.accept("Hello, World!");
// # 실행 결과
// Message: Hello, World!
# Function
@FunctionalInterface
public interface Function<T,R> {
R apply(T t);
}
Function
은 T타입의 입력값 하나를 받고 R타입을 리턴합니다.
apply 메서드를 호출하여 정의된 작업을 수행합니다.
주로 데이터를 변환하거나 처리하는 데 사용됩니다.
[ 예시 코드 ]
Function<Integer, Integer> square = x -> x * x;
int result = square.apply(5);
// # 실행 결과
// 25
# Predicate
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
Predicate
은 T타입의 입력값 하나를 받고 boolean 타입을 리턴합니다.
test 메서드를 호출하여 정의된 작업을 수행합니다.
주로 조건을 테스트하거나 필터링하는데 사용됩니다.
[ 예시 코드 ]
Predicate<Integer> isEven = x -> x % 2 == 0;
boolean result = isEven.test(10);
System.out.println(result);
// # 실행 결과
// true
# Supplier
@FunctionalInterface
public interface Supplier<T> {
T get();
}
Supplier
은 입력값이 없고 T 타입을 리턴합니다.
get 메서드를 호출하여 정의된 작업을 수행합니다.
주로 값을 생성하거나 제공하는데 사용됩니다.
[ 예시 코드 ]
Supplier<String> provideString = () -> "Hello, Supplier!";
String result = provideString.get();
System.out.println(result);
// # 실행 결과
// Hello, Supplier!
# Runnable
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
Runnable
은 입력값 없고 리턴하는 값도 없습니다.
run 메서드를 호출하여 정의된 작업을 수행합니다.
주로 멀티스레딩 환경에서 사용하며 보통 Thread 클래스나 ExecutorService와 함께 사용됩니다.
[ 예시 코드 ]
Runnable task = () -> System.out.println("Runnable");
task.run();
// # 실행 결과
// Runnable
# 정리
함수형 인터페이스 | 입력값 | 결과값 | Method | 람다 표현식 |
Consumer<T> | O | X | void accept (T t) | T -> void |
Function<T, R> | O | O | R apply (T t) | T -> R |
Predicate<T> | O | O | boolean test (T t) | T -> boolean |
Supplier<T> | X | O | T get () | () -> T |
Runnable | X | X | void run () | () -> void |
'Programming > Java' 카테고리의 다른 글
[Java] 람다 표현식이란? #람다식 #Lambda (0) | 2024.08.20 |
---|---|
[Java] 문자열 비교 == VS equals (0) | 2024.08.01 |