[Java] 람다식

김민성·2021년 8월 12일
0

람다식이란?

객체지향 프로그래밍에서 함수는 클래스, 인터페이스 안에서만 존재한다
메소드를 사용하기 위해서는 클래스의 객체를 먼저 생성한 후에 메소드를 호출해야한다.

외부의 독립적인 기능을 가진 함수를 정의하고 다른 모든 클래스에서 공통으로 사용가능한 함수형 프로그래밍 구현을 위해 람다식을 사용한다.

  • 람다식의 장점
    코드가 간결해 가독성이 향상된다.
    멀티쓰레드 환경에서 사용이 용이하다.
    함수 생성과정이 생략돼 생산성이 향상된다.

  • 단점
    남용시 디버깅이 어렵다.
    익명함수의 재사용이 불가능하다.
    재귀호출이 까다롭다.

람다식의 표현

객체지향 프로그램에서 함수형 프로그래밍을 가능하게 하는 기법으로
익명 이너 클래스의 축약형태로 볼 수 있다

내부에 추상 메서드가 단 하나인 경우에 람다식으로 표현 가능하다
(람다식은 메서드명을 생략하기 때문에 구현할 추상 메서드가 여러개인 경우 구분 불가)

(매개변수) -> 표현 바디
(매개변수) -> { 표현 바디 }
() -> { 표현 바디 }
() -> 표현 바디

  • 입력한 매개변수의 자료형 생략가능 (함수형 인터페이스에 포함된 추상 메서드의 매개변수의 타입을 통해 유추)
  • 매개변수 소괄호 생략 가능 (매개변수가 1개일 경우, 소괄호 생략시 자료형도 생략)
  • return 구문이 하나일 경우 생략 가능 (단, return문 생략시 중괄호도 생략)

람다식의 활용

  • 함수형 인터페이스의 객체 생성 과정에서 익명 이너클래스를 이용한 객체 생성 방식의 축약된 표현을 제공한다, 즉 직접 추상메서드를 구현

  • 이미 구현된 메서드의 참조

    클래스 객체 :: 인스턴스 메서드명

함수형 인터페이스

1개의 추상 메소드를 가지고 있는 인터페이스.
람다식은 함수형 인터페이스로만 접근이 가능하다.

기본 함수형 인터페이스

  • Runnable
    thread이 인터페이스화 된 형태,
    run()을 호출해 사용한다. 함수형 인터페이스마다 run() 과 같은 실행 메소드 이름이 다르다.

  • Supplier
    인자를 받지 않고 T 타입의 객체를 리턴한다.

  • Consumer
    T타입의 객체를 인자로 받고 리턴값은 없다.

  • Function<T, R>
    T 타입의 인자를 받아, R 타입의 객체로 리턴한다

  • Predicate
    T 타입 인자를 받고 boolean 타입을 리턴한다

0개의 댓글