[Java] 람다식

2025. 5. 7. 11:39Java

람다식

  • 데이터 처리부에 제공되는 함수 역할을 하는 매개변수를 가진 중괄호 블록
  • 자바에선 람다식을 익명 구현 객체로 변환
(x, y) -> {
    int result = x + y;
    return result;
}

함수형 인터페이스

  • 인터페이스가 단 하나의 추상 메소드를 가지는 것
  • @FunctionalInterface 어노테이션으로 함수형 인터페이스임을 보장할 수 있음
  • 실행문이 하나일 경우에만 중괄호를 생략할 수 있음, 실행문 대신 return문이 하나만 있어도 가능

메소드 참조

  • 메소드 참조로 매개변수의 정보 및 리턴 타입을 알아내 람다식에서 불필요한 매개변수 제거
  • 메소드 참조로 단순화 기능
// 정적 메소드 -> 클래스 :: 메소드
// 인스턴스 메소드 -> 참조변수 :: 메소드

(left, right) -> Math.max(left,right);
Math :: max;
  • 람다식에서 제공되는 a 변수의 메소드를 호출해서 b 매개변수를 매개값으로 사용
  • a의 클래스 이름 뒤에 :: 기호를 붙이고 메소드 이름을 기술할 수 있음
// 클래스 :: instanceMethod

(a, b) -> { a.instanceMethod(b); }

생성자 참조

  • 객체를 생성하는 것. 람다식이 단순히 객체를 생성하고 return 하도록 구성되면 람다식을 생성자 참조로 대치 가능
  • 클래스 이름 뒤에 :: 기호를 붙이고 new 연산자를 기술
  • 생성자가 여러개 오버로딩된 경우, 컴파일러는 함수형 인터페이스의 추상 메소드와 동일한 매개변수 타입과 개수를 가지고 있는 생성자를 찾아 실행. 생성자가 없으면 컴파일 오류 발생.
// 클래스 :: new

(a, b) -> { return new 클래스(a, b); }

참고자료

  • ITYL 6기 수업자료

'Java' 카테고리의 다른 글

[Java] 컬렉션 자료구조  (1) 2025.04.30
[Java] Multi Thread  (1) 2025.04.29
[Java] 제네릭  (0) 2025.04.29
[Java] 인터페이스  (1) 2025.04.21
[Java] 상속  (1) 2025.04.17