함수형인터페이스

    [Java] 람다와 스트림

    🔍 람다식 람다식이란 메서드를 하나의 식으로 표현한 것으로 메서드를 간략하면서도 명확한 식으로 표시할 수 있다는 장점이 있다. 🗝️ 람다식의 기본 형태 메서드에서 반환 타입과 이름을 제거하고 매개변수 선언부와 몸통 사이에 화살표를 추가하면 된다. 반환타입 메서드이름 (매개변수) {} =====> (매개변수) -> { } // Example int max(int a, int b) { return a (int a, int b) -> return a < b? b : a 🗝️ 함수형 인터페이스 자바에서 모든 메서드는 클래스 내에 포함되어야 한다. 즉, 클래스 없이는 함수를 사용할 수 없다는 뜻이다. 그럼에도 불구하고 람다식이 클래스 없이 실행될 수 있는 이유는 람다식은 실제로..

    [Effective Java] 표준 함수형 인터페이스를 사용하라

    java.util.function 패키지에는 다양한 용도의 표준 함수형 인터페이스가 담겨 있다. 기억해야 할 함수형 인터페이스 6개 Operator 인터페이스 - 반환값과 인수의 타입이 같은 함수 인수가 1개인 UnaryOperator 인수가 2개인 BinaryOperator T apply(T t) String::toLoswerCase T apply(T t1, T t2) BigInteger::add Predicate 인터페이스 - 인수 하나를 받아 boolean을 반환하는 함수 boolean test(T t) Collection::isEmpty Function 인터페이스 - 인수와 반환 타입이 다른 함수 R apply(T t) Arrays::asList Supplier 인터페이스 - 인수를 받지 않고 값..

    [Java] Supplier 함수 인터페이스와 Lazy Evaluation

    [Java] Supplier 함수 인터페이스와 Lazy Evaluation

    Supplier T타입의 값을 제공하는 함수 인터페이스이다. T타입의 값을 제공 받고 리턴도 하지 않아 이 인터페이스가 왜 필요한지 의문이 들 수 있는데 주로 Lazy Evaluation에 사용이 된다. Lazy Evaluation 불필요한 연산을 피하기 위해 연산을 지연시켜놓았다가 필요할 때 연산하는 방법. 예시를 통해 Lazy Evaluation에 대해 알아보자. 1. printState에서는 valid가 true이면 value + word, false이면 wrong world를 출력한다. public void printState(boolean valid, String value) { if(valid) { System.out.println(value + " world"); } else { System..

    [Java] 자바에서 제공하는 함수형 인터페이스

    Function T타입을 받아서 R타입을 리턴하는 함수형 인터페이스 함수 조합용 메소드 : andThen, compose [예제] compose는 (...)안의 람다식을 먼저 계산한다. andThen은 plus를 먼저 계산하고 (...)안의 람다식을 계산한다. Function plus = (num) -> num + 5; Function multiply = (num) -> num * 2; Function world = (s) -> s + " world"; System.out.println(plus.apply(5)); // 10 System.out.println(multiply.apply(5)); // 10 System.out.println(world.apply("hello")); // hello world..

    [Java] 함수형 인터페이스와 람다 표현식

    등장 배경 함수형 인터페이스와 람다식이 등장한 이유를 알기 위해 다음 Person 인터페이스와 이를 구현한 Student 클래스를 보자. interface Person { void study(String subject){} } class Student implement Person { @Override public void study(String subject) { System.out.println(subject + " 공부"); } } 인터페이스를 구현하는데 상당히 많은 줄을 차지한다. 이것을 해결하기 위해 자바8에서부터 람다식을 지원한다. 람다식은 코드를 간결하게 만들기 위해 등장한 만큼 추측할 수 있는 모든 정보를 제거하여 간결하게 표현한다. 위의 코드를 람다식으로 표현하면 다음과 같다. Perso..