람다식, 메소드 레퍼런스

Lee kyu min·2024년 2월 26일

Java study

목록 보기
34/41

람다함수

  • 함수를 단순하게 표현하는 방법
    함수의 이름이 없는 함수(익명 함수)이다
  • 람다식은 자체만으로 메서드 대신이 될 수 있으며 메서드를 변수처럼 다루는 것이 가능하다.
  • 람다 stream에서 단순 반복문 사용 시 성능이 떨어진다.
  • 익명 객체 특성상 디버깅 할때 콜 스택(call stack) 추적이 어렵다
  • 재귀함수로 만들기 부적합하다

1. 사용법

  • 원래 메서드
반환타입 메서드명 (매개변수) {
	실행문
};
  • 람다식
(매개변수) -> {실행문}

ex)

(출처 : https://hstory0208.tistory.com/entry/Java%EC%9E%90%EB%B0%94-%EB%9E%8C%EB%8B%A4%EC%8B%9DLambda%EC%9D%B4%EB%9E%80-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%82%AC%EC%9A%A9%EB%B2%95)

1) ; 사용x
2) ()안의 매개변수 타입 생략 가능
3) 매개변수가 하나면 () 생략 가능
4) 실행문 한줄이면 { } 생략 가능
5) 반환 값이 있는 메서드면 return문 생략

ex)

interface IAdd {
    int add(int x, int y);
}

public class Main {
    public static void main(String[] args) {
    	int n = result( (x, y) -> x + y ); // 메소드의 매개변수에 람다식을 전달
        System.out.println(n); // 3
    }
    
    public static int result(IAdd lambda) {
    	return lambda.add(1,2);
    }
}

출처: https://inpa.tistory.com/entry/%E2%98%95-Lambda-Expression

2. 메소드 레퍼런스(method reference)

* 람다 표현식이 하나의 메소드만 호출할 경우 매개변수를 생략하고 사용 가능하게 해준다.

1) 사용법

클래스 이름::메소드 이름
참조변수이름::메소드 이름

ex)

(base, exponent) -> Math.pow(base, exponent);	//Math클래스의 제곱연산 메서드pow()호출 람다식
Math::pow;	//메서드 레퍼런스

0개의 댓글