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개일 땐 만들어둔거 쓰라는 의미
'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 |