[Java] 람다 표현식, 메소드 참조

원서연·2023년 11월 11일
0

1. 람다 표현식

  • 자바8부터 람다 표현식을 지원
  • 함수형 프로그래밍의 핵심 요소
  • 람다 표현식의 형태 : (parameter) -> { body }
    • ex) (a, b) -> a + b
  • 인터페이스, 추상클래스에 대해서 사용된다.
    • 단, 추상 메소드는 1개만 가져야 한다.

1) 함수형 인터페이스에 대해 구현체를 생성할 때 사용한다.

  • 함수형 인터페이스란
    • 1개의 추상 메소드를 가진 인터페이스를 의미
      (추상 클래스에 대해서도 사용해도 된다.)
  // 함수형 인터페이스
  @FunctionalInterface
  public interface Adder {
      int add(int a, int b);
  }

  // 람다 표현식을 통한 함수형 인터페이스 구현
  Adder adder = (a, b) -> a + b;

2) 람다 표현식의 장점

  • 간결성

    • 람다 표현식을 사용하면 복잡한 익명 클래스를 간결하게 표현할 수 있습니다.
    • 이로 인해 코드의 가독성이 향상됩니다.
  • 함수형 프로그래밍

    • 람다 표현식은 함수를 일급 객체로 다루는 함수형 프로그래밍을 가능하게 합니다.
    • 이를 통해 시퀀스의 연산, 병렬 처리 등을 간결하게 구현할 수 있습니다.
  • 높은 표현력

    • 람다 표현식을 사용하면 코드의 의도를 더욱 명확하게 표현할 수 있습니다.

3) 람다 표현식을 사용하면서 주의해야 할 점

  • 외부의 변수를 변경할 수 없습니다.
  • 재귀적으로 호출할 수 없습니다.

    이러한 제약 사항은 람다 표현식의 안전성을 보장하면서, 복잡한 동작을 피하도록 유도합니다.

2. 메소드 참조

  • 람다 표현식의 한 형태
  • 이미 정의된 메소드를 참조하여 더 간단하게 표현
  • :: 기호를 사용하여 표현

1) 메소드 참조 사용하는 경우

// Hong 8
Doctor doctor8 = (hp) -> heal(hp);
doctor8.heal(100);

// Hong 8 v2
Doctor doctor8v2 = Main::heal; //이게 메소드 참조
doctor8v2.heal(100);

// Hong 9
Doctor doctor9 = hp -> System.out.println(hp);
doctor9.heal(100);

// Hong 9
Doctor doctor9v2 = System.out::println; // 이게 메소드 참조
doctor9v2.heal(100);
  • 메소드 참조가 더 간결하고 명확합니다.
profile
웹 백엔드 프로그래밍 Today I Learned

0개의 댓글