RxJava

[리액티브(Reactive) 프로그래밍] 자바에서의 함수형 프로그래밍 기본 지식

대장형아 2024. 12. 12. 16:17

함수형 인터페이스와 람다의 개념 파악

함수형 인터페이스 

     단 하나의 추상 메서드만 가지고 있는 인터페이스이다. (예외: 디폴트 메서드는 포함 할 수 있음)

     함수형 인터페이스의 메서드를 람다 표현식으로 작성해서 다른 메서드의 파라미터로 전달 할 수 있음

     즉, 람다 표현식 전체를 해당 함수형 인터페이스를 구현한 클래스의 인스턴스로 취급함

      Java 8에서는 기존의 추상 메서드가 하나만 있는 인터페이스도 함수형 인터페이스로 간주

람다 표현식

   (String a, String b)     ->       a.equals(b)
----람다 파라미터 --  화살표 -- 람다 몸체---

    ▶ 람다 표현식은 함수형 인터페이스를 구현한 클래스 즉, 익명 클래스의 메서드를 단순화 한 표현식

    ▶ 함수형 인터페이스의 메서드를 람다 표현식으로 작성해서 다른 메서드의 파라미터로 전달할 수 있음

    ▶ 즉, 람다 표현식 전체를 해당 함수형 인터페이스를 구현한 클래스의 인스턴스로 취급함

함수 디스크립터(Function Descriptor)

     함수형 인터페이스의 추상 메서드를 설명해놓은 시그니처

     Java 8 에서는 java.uril.function 패키지로 다양한 새로운 함수형 인터페이스를 지원

메서드 레퍼런스란

메서드 레퍼런스

    ▶ 우리말 : 메서드 참조라는 의미 

    ▶ 람다 표현식을 body 부분에 기술되는 메서드를 이용해서 표현되며, 메서드의 이름만 전달함

    ▶ 구분자를 붙이는 방식으로 메서드 레퍼런스를 표현함

    ▶ 메서드 레퍼런스를 사용하면 람다 표현식이 더욱 간결해짐

 

람다 : (Car car) -> car.getCarName( )
메서드 : Car::getCarName

메서드 레퍼런스의 유형

  1. ClassName::static method
    • 예) (String s) -> Integer.parseInt(s)
      ⇒ Integer::parseInt
  2. ClassName::instance method
    • 예) (String s) -> s.toLowerCase()
      ⇒ String::toLowerCase
  3. object::instance method
    • 예) (int count) -> obj.getTotal(count)
      ⇒ obj::getTotal
  4. ClassName::new
    • 예) () -> new Car()
      ⇒ Car::new

람다 표현식 예제

  1. Predicate<String>
    • (String s) -> s.isEmpty()
      ⇒ s -> s.isEmpty()
  2. Function<Integer, String>
    • (Integer i) -> String.valueOf(i)
      ⇒ i -> String.valueOf(i)
  3. BiPredicate<List<Integer>, Integer>
    • (List<Integer> list, Integer num) -> list.contains(num)
      ⇒ (list, num) -> list.contains(num)
  4. Consumer<String>
    • (String s) -> System.out.println(s)
      ⇒ s -> System.out.println(s)
  5. BiFunction<String, CarType, Car>
    • (String s1, CarType s2) -> new Car(s1, s2)
      ⇒ (s1, s2) -> new Car(s1, s2)

 



출처 : 인프런 (Kevin의 알기쉬운 RxJava) 

 

Kevin의 알기 쉬운 RxJava 1부 강의 | Kevin - 인프런

Kevin | 리액티브 프로그래밍이라는 진입 장벽을 넘고 싶으신가요? Kevin의 알기 쉬운 RxJava가 그 벽을 넘을 수 있는 힘을 키워드리겠습니다., 리액티브 프로그래밍, 알기 쉽고 확실하게 배워보세요!

www.inflearn.com