관리 메뉴

KorSA

JAVA 함수형 인터페이스, function 패키지 본문

Knowledge Wiki/Java

JAVA 함수형 인터페이스, function 패키지

Praiv. 2021. 12. 1. 18:07
320x100

1. 함수와 메서드의 차이
    근본적으로 동일. 함수는 일반적 용어, 메서드는 객체지향개념 용어
    함수는 클래스에 독립적, 메서드는 클래스에 종속적

2. 함수형 인터페이스
    단 하나의 추상 메서드만 선언된 인터페이스
    @FunctionalInterface 어노테이션을 붙이면 컴파일러가 문법 체크해줌. 쓰면 좋음.
    추상 메서드를 선언할 때 'public abstract'는 생략 가능하다. 

    인터페이스 함수의 기본이 'public abstract' 니까.

3. 함수형인터페이스 타입의 매개변수는 람다식을 전달하면 된다는 뜻이다.

// 선언
void aMethod(MyFunction f){
	f.myMethod();
}

// 호출
aMethod(()-> System.out.println("myMethod()"));


4. 함수형인터페이스 타입을 리턴타입으로 쓸 수도 있다.

MyFunction myMethod(){
	return ()->{};
}

 

5. java.util.function 패키지
    자주 사용되는 다양한 함수형 인터페이스를 제공
    Runnable : 매개변수도 없고, 반환값도 없음

void run();


    Supplier<T> : 매개변수는 없고, 반환값은 있음

T get();


    Consumer<T> : Supplier와 반대로 매개변수만 있고, 반환값이 없음

void accpet(T t);


    Function<T, R> : 일반적인 함수, 하나의 매개변수를 받아서 결과를 반환

R apply(T t);


    Predicate<T> : 매개변수는 하나이고 조건식을 표현하는데 사용됨

boolean test(T t);


    BiConsumer<T, U> : 두 개의 매개변수만 있고 반환값이 없음

void accept(T t, U u);


    BiPredicate<T, U> : 조건식을 표현하는 데 사용됨. 매개변수는 둘, 반환값은 boolean

boolean test(T t, U u);


    BiFunction<T, U, R> : 두 개의 매개변수를 받아서 한개의 결과를 반환

R apply(T t, U u);


    UnaryOperator<T> : Function의 자손. Function과 달리 매개변수와 결과의 타입이 같다

T apply(T t);


    BinaryOpeartor<T> : BiFunction의 자손. BiFunction과 달리 매개변수와 결과의 타입이 같다

T apply(T t, T t);


    JAVA에서 이렇게 만들어둔 이유는 왠만하면 매개변수 1개, 2개일 땐 만들어둔거 쓰라는 의미

728x90
728x90

'Knowledge Wiki > Java' 카테고리의 다른 글

JAVA 스트림  (0) 2021.12.02
JAVA 메서드 참조  (0) 2021.12.01
JAVA 람다식  (0) 2021.12.01
JAVA 쓰레드 동기화  (0) 2021.12.01
JAVA 쓰레드  (0) 2021.12.01
Comments