Java 함수적 인터페이스 Consumer, Supplier

함수적 인터페이스의 사용

Featured image
종류 특징 설명
Consumer 매개값은 있고, 리턴값은 없음 매개값 -> Consumer
Supplier 매개값은 없고, 리턴값은 있음 Supplier -> 리턴값
Function 매개값도 있고, 리턴값도 있음
주로 매개값을 리턴값으로 매핑(타입 변환)
매개값 -> Function -> 리턴값
Operator 매개값도 있고, 리턴값도 있음
주로 매개값을 연산하고 결과를 리턴
매개값 -> Operator -> 리턴값
Predicate 매개값은 있고, 리턴 타입은 boolean
매개값을 조사해서 true/false를 리턴
매개값 -> Predicate -> boolean


인터페이스명 추상 메소드 설명
Consumer void accept(T t) 객체 T를 받아 소비
BiConsumer<T, U> void accept(T t, U u) 객체 T와 U를 받아 소비
DoubleConsumer void accept(double value) double 값을 받아 소비
IntConsumer void accept(int value) int값을 받아 소비
LongConsumer void accept(long value) long 값을 받아 소비
ObjDoubleConsumer void accept(T t, double value) 객체 T와 double 값을 받아 소비
ObjIntConsumer void accept(T t, int value) 객체 T와 int 값을 받아 소비
ObjLongConsumer void accept(T t, long value) 객체 T와 long 값을 받아 소비

함수적 인터페이스 Consumer

// Consumer 인터페이스
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.DoubleConsumer;
import java.util.function.ObjIntConsumer;

public class ConsumerExam {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Consumer<String> consumer = str -> System.out.println(str + " 8");
		consumer.accept("Java"); // accept 함수 구현
		
		BiConsumer<String, Integer> biConsumer = (str, num) -> System.out.println(str + " " + num);
		biConsumer.accept("Java", 8);
		
		DoubleConsumer doubleConsumer = d -> System.out.println("Java" + " " + d);
		doubleConsumer.accept(8.0);
		
		ObjIntConsumer<String> objIntConsumer = (t, i) -> System.out.println(t + " " + i);
		objIntConsumer.accept("Java", 8);
	}
}

함수적 인터페이스 Supplier

인터페이스명 추상 메소드 설명
Supplier T.get() T 객체를 리턴
BooleanSupplier boolean getAsBoolean() boolean 값을 리턴
DoubleSupplier double getAsDouble() double 값을 리턴
IntSupplier int getAsInt() int 값을 리턴
LongSupplier long getAsLong() long 값을 리턴
import java.util.function.IntSupplier;

public class SupplierExam {
	
	public static void main(String[] args) {
		IntSupplier intSupplier = () -> {
			int num = (int) (Math.random() * 6) + 1;
			return num;
		}; // 람다식
		
		int num = intSupplier.getAsInt();
		System.out.println("눈의 수 : " + num);
	}
}