본문 바로가기

Java

[Java] 람다식(lambda)

728x90
반응형

java 8에서 도입된 기능으로 익명 함수를 정의하고 사용할 수 있게 해준다.

람다식은 주로 간단한 함수형 인터페이스의 구현을 단순화하고 코드를 더 읽기 쉽게 만든다.

 

 

(parameters) -> { body }
  • parameters

함수의 매개변수, 괄호 안에 매개변수를 정의함.

매개 변수 타입을 명시할 수도 있고 생략할 수도 있음.

매개변수가 하나만 있는 경우 괄호도 생략 가능.

  • ->

람다 연산자. 매개변수 목록과 람다 본문을 분리

  • body

람다의 본문.

중괄호 안에 코드 블록을 작성하거나, 단일 표현식인 경우 중괄호 생략 가능

 

 

//파라미터 없이 단순 명령 수행


() -> System.out.println("Hello World")

 

//하나의 파라미터와 단순한 명령


x -> System.out.println(x)

//스트림의 필터에서도 사용가능

.filter(num -> num%5 ==0)

 

//두개의 파라미터와 복잡한 명령


(x, y) -> {
    int result = x + y;
    System.out.println(result);
}

메소드 참조 (::)

메소드 참조는 람다 표현식의 또 다른 형태로, 이미 정의된 메소드를 참조할 수 있게 함.

 

Object::method
  • 정적 메소드 참조

클래스 :: 정적메소드 형태로 사용.

ex) Math::max == Math.max(a, b)와 동일

  • 특정 인스턴스의 메소드 참조

인스턴스 :: 메소드 형태로 사용.

ex) str::length == str.length()와 동일

  • 특정 타입의 임이의 객체에 대한 메소드 참조

클래스::메소드 형태로 사용.

ex) String::length 는 각 문자열 인스턴스에 대해 length() 메소드를 호출하는 것과 동일.

  • 생성자 참조

클래스::new 형태로 사용.

ex) ArrayList::new == new ArrayList()와 동일

728x90
반응형

'Java' 카테고리의 다른 글

[자바의정석/5]배열이란  (1) 2023.10.20
[자바의정석/4]조건문과 반복문이란  (0) 2023.10.19
[자바의정석/3]연산자란  (0) 2023.10.17
[자바의정석/2]변수란  (1) 2023.10.16
[자바의정석/1]Java란  (1) 2023.10.16