[백업][가리사니] 자바 스트림 : 1. @functionalinterface 함수 인터페이스
java

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

Runnable

public static void run(Runnable runnable) {
	runnable.run();
}
public static void main(String[] args) {
	run(() -> System.out.println("안녕하세요."));
}

Supplier

public static <T> void run(Supplier<T> supplier) {
    System.out.println(supplier.get());;
}
public static void main(String[] args) {
    run(() -> "Supplier 는 인자 없이 반환");
}

Predicate

public static <T> void run(Predicate<T> predicate, T param1) {
    System.out.println("입력 ["+param1+"] : " + predicate.test(param1));
}
public static void main(String[] args) {
    run((e) -> e > 1, 3);
    run((e) -> e.length() == 3, "abc");
}

Consumer

public static <T> void run(Consumer<T> consumer, T param1) {
    consumer.accept(param1);
}
public static <T, U> void run(BiConsumer<T, U> biConsumer, T param1, U param2) {
    biConsumer.accept(param1, param2);
}
public static void main(String[] args) {
    run((e) -> System.out.println("인자 : " + e), "Consumer 예제");

    run((e, f) -> {
        System.out.println("인자1 : " + e);
        System.out.println("인자2 : " + e);
    }, "BiConsumer", "예제");
}

Function

public static <T, R> void run(Function<T, R> function, T param1) {
    System.out.println("Function 반환 : " + function.apply(param1));
}
public static <T, U, R> void run(BiFunction<T, U, R> biFunction, T param1, U param2) {
    System.out.println("BiFunction 반환 : " + biFunction.apply(param1, param2));
}
public static void main(String[] args) {
    run((e) -> e + " 예제", "Function");
    run((e, f) -> e + f, "BiConsumer", " 예제");
}