[Java] 함수를 값으로 넘겨주는 방법 : 인터페이스 사용 = 람다(익명함수)

정재현·2024년 1월 8일

Java

목록 보기
40/43
post-thumbnail

람다(익명함수)란

  • 람다 표현식메서드로 전달할 수 있는 익명 함수를 단순화한 것
  • 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있다.
  • 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다.
  • 함수형 프로그래밍의 아이디어인 (함수를 값으로 다루거나, 다른 함수에 넘길 수 있다)와 같은 일들이 가능하다.
    • 즉, 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다.
  • (간결성) 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다

람다 함수 문법

(파라미터 값, ...) -> { 함수 몸체 }
  • 예시) 아래의 함수 두개는 같은 함수
public int toLambdaMethod(int x, int y) {
	return x + y;
}

// 이름 반환타입, return문 여부에 따라 {}까지도 생략이 가능
(x, y) -> x + y

(x, y) -> { 
	x + y 
}

예시2)

public int toLambdaMethod2() {
	return 100;
}

// 이런 함수도 가능
() -> 100
  • 예시3)
public void toLambdaMethod3() {
	System.out.println("Hello World");
}

// 모든 유형의 함수에 가능
() -> System.out.println("Hello World")

함수를 값으로 전달하는 예시 : 인터페이스 사용 = 람다(익명함수) 사용

  • 함수를 값으로 전달하는데, 어딘가에 구현하지 않고 그냥 간단하게 구현해서 넘기고 싶으면 람다식을 이용
    • 함수형 인터페이스를 선언 대신 사용하는 방식으로 익명함수 람다를 사용
  • 람다식은 “함수 값”으로 평가되며, 한번만 사용
  • 문법도 간결하게 작성 가능

예시

// 주말의 주차장 추가
ArrayList<Car> weekendParkingLot = new ArrayList<>();

weekendParkingLot
.addAll(parkCars(carsWantToPark, (Car car) -> car.hasParkingTicket() && car.getParkingMoney() > 1000));

profile
공부 기록 보관소

0개의 댓글