FunctionalInterface

자바가 람다를 지원하면서 API를 작성하는 모범 사례도 크게 바뀌었다. 상위 클래스의 기본 메서드를 재정의해 원하는 동작을 구현하는 템플릿 매서드 패턴의 매력이 줄었다. ⇒ 함수 객체를 받는 정적 팩터리나 생성자를 제공 LinkedHashMap을 생각해보자. LinkedHashMap의 protected 메서드인 removeEldestEntry 를 재정의하면 캐시로 LinkedHashMap을 사용할 수 있다. 맵에 새로운 키를 추가하는 put 메서드는 이 메서드를 호출하여 true가 반환되면 맵에서 가장 오래된 원소를 제거하게 로직을 추가하면 된다. public class MyLinkedHashMap extends LinkedHashMap { @Override protected boolean removeE..
매개변수와 boolean 리턴값이 있는 testXXX() 메소드를 가지고 있다. 매개값을 조사해서 true 또는 false를 리턴하는 역할을 한다. public class PredicateExample { private static List numList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); public static int count(IntPredicate predicate){ int count = 0; for(int num : numList){ if(predicate.test(num)){ count ++; } } return count; } public static void main(String[] args) { int evenNumCount = coun..
Operator 함수적 인터페이스는 Function과 동일하게 매개 변수와 리턴값이 있는 applyXXX() 메소드를 가지고 있다. 하지만 이 메소드들은 매개값을 리턴값으로 매핑(타입 변환)하는 역할보다 매개값을 이용해서 연산을 수행한 후 동일한 타입으로 리턴값을 제공하는 역할을 한다. public class OperatorExample { private static int[] ages = {15, 20, 10, 50}; public static int maxOrmin(IntBinaryOperator operator){ int result = ages[0]; for(int age : ages){ result = operator.applyAsInt(result, age); } return result; }..
자바에서 한 개의 추상 메소드를 가지는 인터페이스들은 모두 람다식을 이용할 수 있다. Runnable 인터페이스도 마찬가지이다. Runnable runnable = () -> { ... }; Thread thread = new Thread(() -> { ... }); // Thread 생성자 호출 자바8부터 빈번하게 사용되는 함수적 인터페이스(functional Interface)는 java.util.function 표준 API패키지로 제공한다. java.util.function이 제공하는 functional Interface의 목적은 메소드 또는 생성자의 매개 타입으로 사용되어 람다식에 대입될 수 있다. 함수적 인터페이스는 크게 Consumer, Supplier, Function, Operator, P..
[람다식] 타겟 타입과 함수적 인터페이스 람다식의 형태는 매개변수를 가진 코드블록이어서 메소드를 선언하는 것처럼 보이지만 실제로는 이 메소드를 가지고 있는 객체를 생성해 낸다. (자바는 메소드를 단독으로 선언할 수 없기 때문) 인터페이스 변수 = 람다식;람다식은 인터페이스의 익명 구현 객체를 생성한다고 보면 된다. (클래스를 생성하고 객체화 함) 인터페이스의 종류에 따라 작성 방법이 달라지기 때문에 람다식이 대입될 인터페이스를 람다식의 타겟 타입(target type)이라고 한다. 함수적 인터페이스(@FunctionallInterface) 람다식이 하나의 메소드를 정의하기 때문에 두 개 이상의 추상 메소드가 선언된 인터페이스는 람다식을 이용해 객체를 생성할 수 없다. 하나의 추상 메소드가 선언된 인터페이..
깡냉쓰
'FunctionalInterface' 태그의 글 목록