우리는 앞서서 Consumer 함수적 인터페이스를 살펴보았습니다. 여기서 Consumer 계열 인터페이스의 특징은 "파라미터는 있지만, 리턴 값은 없다"는 점이 특징이었죠.
람다식(4) - 표준 API의 함수적 인터페이스 2 : Consumer Functional Interface
앞선 아티클에서 표준 API로 제공되는 함수적 인터페이스들의 종류에 대해서 간단히 살펴보았습니다. 람다식(4) - 표준 API의 함수적 인터페이스 1 앞서서 함수적 인터페이스 - 즉, 단 한 개의 추상
nozeroslope.tistory.com
이번 시간에 살펴볼 Supplier는 이름에서 유추할 수 있다시피, Consumer 타입과는 반대로 [파라미터는 없고, 리턴 값이 있는 추상 메서드]를 갖습니다. 이때 추상메서드는 getXXX( ) 형태의 이름을 갖게 됩니다. 여기서는 리턴되는 값들의 타입에 따라서 인터페이스가 달라지게 됩니다. 아래 리스트를 확인해 주세요.
인터페이스 명 | 추상 메서드 | 설명 |
Supplier<T> | T get( ) | T 타입의 객체를 리턴한다 |
BooleanSupplier | boolean getAsBoolean( ) | boolean 타입 값을 리턴한다 |
DoubleSupplier | double getAsDouble( ) | double 타입 값을 리턴한다 |
IntSupplier | int getAsInt( ) | int 타입 값을 리턴한다 |
LongSupplier | long getAsLong( ) | long 타입 값을 리턴한다 |
예를 들어 제네릭을 사용하는 Supplier<String> 인터페이스를 사용한다고 가정하면, 다음과 같이 인터페이스 구현 코드를 작성하게 됩니다. 파라미터는 없으므로 ( )를 사용하고, 중괄호 { } 안에는 반드시 return이 필요합니다. 여기서 제네릭 타입으로 String을 지정했기 때문에 반드시 문자열을 리턴해야 합니다.
Supplier<String> supplier = () -> { ... ; return "문자열"; }
IntSupplier 인터페이스를 타겟 타입으로 하는 람다식의 경우에는 다음과 같습니다. 역시 return에 int 값을 리턴하도록 명시해야 합니다.
IntSupplier supplier = () -> { ...; return intValue; }
다음 예제는 IntSupplier 인터페이스를 타겟 타입으로 하는데, 주사위의 숫자를 랜덤하게 제공하는 것을 목적으로 하는 코드입니다.
public class ExampleMain {
public static void main(String[] args) {
IntSupplier intSupplier = () -> {
int num = (int)(Math.random() * 6) + 1;
return num;
};
int numResult = intSupplier.getAsInt();
System.out.println(numResult);
}
}
'Programming > JAVA' 카테고리의 다른 글
람다식(4) - 표준 API의 함수적 인터페이스 4 : Function Functional Interface 2 (0) | 2023.06.14 |
---|---|
람다식(4) - 표준 API의 함수적 인터페이스 4 : Function Functional Interface 1 (0) | 2023.06.10 |
람다식(4) - 표준 API의 함수적 인터페이스 2 : Consumer Functional Interface (0) | 2023.06.04 |
람다식(4) - 표준 API의 함수적 인터페이스 1 (0) | 2023.05.28 |
람다식(3) - 클래스 멤버, 로컬 변수의 사용 2 (0) | 2023.05.24 |