티스토리 뷰

Java

Functional Programming

snail voyager 2022. 3. 14. 22:58
728x90
반응형

Functional Programming

  • 선언형 프로그래밍 (Declative Programming)
  • What to do? 무엇을 해야 하는가?
  • 일급객체로서의 함수 -> 함수를 객체로 표현
  • 역할에 충실한 코드 -> 가독성, 유지 보수, 안정성, 확장성
  • 패러다임의 전환 -> Stream, Optional

일급객체 First-Class Object

다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.
보통 함수에 인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다.

Functional Interface

  • 하나의 abstract method만을 가지는 인터페이스 (Single Abstract Method Interface)
  • 매개변수 하나 Function<T, R>, 두개 BiFunction<T, U, R> 사용, 세개 이상은 커스텀
  • Consumer, DoubleConsumer, IntConsumer 등 다양한 인터페이스 :
    Wrapper Class 보다 Primitive형을 사용하는게 메모리 절약 가능
  • java.lang.Runnable, java.util.Comparator, java.util.concurrent.Callable, etc

Method Reference

  • 클래스의 static method를 지정할 때
    . Integer::parseInt
  • 선언된 객체의 instance method를 지정할 때
    . str::length
  • 객체의 instance method를 지정할 때
    . 클래스의 instance를 parameter로 넘겨 method를 실행
  • 클래스의 constructor를 지정할 때
    . Object::new
728x90
반응형

'Java' 카테고리의 다른 글

[Java] Json 변환 Jackson ObjectMapper  (0) 2022.08.01
Primitive vs Wrapper Class  (0) 2022.03.20
Lambda Expression  (0) 2020.09.14
추상클래스 - 템플릿 메서드  (0) 2020.09.03
에러 vs 예외  (0) 2020.05.19
반응형
300x250