제네릭 파라미터에는 참조형만 사용할 수 있다.
T타입의 값을 받아서 R타입의 객체를 리턴하는 함수. apply 메소드만 구현하면 된다. 객체에서 선택 / 추출에 쓰인다.
Function<Integer, String> integerToString = (number) -> Integer.toString(number);
System.out.println(integerToString.apply(10));
(String s) -> s.length()
.compose()와 .andThen()을 사용해서 함수를 조합할 수 있다.
Function<Integer, String> integerToString = (number) -> Integer.toString(number);
Function<Integer, Integer> plusTen = (number) -> number + 10;
Function<Integer, String> compose = integerToString.compose(plusTen); // plusTen 부터 수행후 결과값을 integerToString에서 사용
System.out.println(compose.apply(10));
Function<Integer, String> integerToString = (number) -> Integer.toString(number);
Function<String, Integer> stringToInteger = (string) -> Integer.parseInt(string);
Function<Integer, Integer> integerIntegerFunction = integerToString.andThen(stringToInteger); // integerToString부터 수행 후 결과 값을 stringToInteger에서 사용
System.out.println(integerIntegerFunction.apply(10));
Bi가 붙은 함수형인터페이스는 매개변수가 2개이다. BiFunction말고도 BiPredicate, BiConsumer가 존재한다.
T타입의 값과, U타입의 값을 매개변수로 받아서 R타입의 값을 리턴한다.
T타입의 값을 매개변수로 받고 리턴값은 없다. accept메소드를 구현하면 된다.
객체에서 소비에 쓰인다.
(Apple a) -> System.out.println(a.getWeight())
매개변수는 없고, T타입의 값을 반환한다. get메소드를 구현하면 된다.
객체 생성에 쓰인다.
() -> new Apple(10)
test라는 추상 메서드를 정의한다.
T타입의 값을 매개변수로 받아서 true나 false를 리턴한다. 불리언 표현에 쓰인다.
(List<String> list) -> list.isEmpty()
아래의 메소드들로 조합해서 사용할 수 있다.
Funtion<T, R>의 T타입과 R타입이 같은 타입인 경우 UnaryOperator< T >로 사용할 수 있다.
Funtion을 상속받았기 때문에 compose나 andThen도 사용할 수 있다.
BiFunction<T, U, R>의 T타입, U타입, R타입이 모두 같은 경우 BinaryOperator< T >로 사용할 수 있다.