Hello

Java 람다식(Lambda Expression)

by 볼빵빵오춘기

Java는 원래 OOP(객체지향프로그링밍)인데 JDK1.8부터 함수형언어(fp)를 추가했다.

 

람다식(Lambda Expression)

  • 함수(메서드)를 간단한 ‘식(expression)’으로 표현하는 방법이다.
  • 익명 함수(이름이 없는 함수, anonymous function)이다.

 

🧐 함수와 메서드의 차이

  • 근본적으로 동일. 함수는 일반적 용어, 메서드는 객체지향개념 용어이다.
  • 함수는 클래스에 독립적, 메서드는 클래스에 종속적이다.

 

자바에서는 클래스내에서 선언하기 때문에 다 메서드이다.

 

람다식 작성하기

1. 메서드의 이름과 반환타입을 제거하고 ‘->’을 블록{} 앞에 추가한다.

2. 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능하다.(끝에 ’;’ 안 붙임)

3. 매개변수의 타입이 추론 가능하면 생략가능하다.(대부분의 경우 생략가능)

※ 1번까지만 해도 람다식의 완성이다.

 

람다식 작성 시 주의사항

  • 매개변수가 하나인 경우, 괄호() 생략가능하다.(타입이 없을 때만)
  • 블록 안의 문장이 하나뿐 일 때, 괄호{} 생략가능하다.(끝에 ‘;’ 안 붙임)
  • 단, 하나뿐인 문장이 return문이면 괄호{} 생략불가능하다. [⇒ 너무 신경쓰지말기 대분분 return을 생략한다.]

 

람다식 퀴즈

 

람다식은 익명 함수? 익명 객체!

  • 람다식은 익명 함수가 아니라 익명 객체이다.
더보기

⇒ 오른쪽은 익명클래스! 익명객체이다. (객체의 선언과 생성 동시에)

⇒ 오른쪽코드와 왼쪽코드는 같이다.

  • 람다식(익명 객체)을 다루기 위한 참조변수가 필요하다.
더보기

⇒ 참조변수의 타입은? Object

⇒ 에러가 난다.

 

예제

public class Try {
	
	public static void main(String[] args) {
		
//		Object obj2 = (a,b) -> a > b ? a : b; // 람다식, 익명객체
		
		Object obj = new Object() {
			int max(int a, int b) {
				return a>b ? a: b;
			}
		};
		
		int value = obj.max(3,5);
		
	}

}

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기