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);
}
}
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java java.util.function 패키지 (0) | 2023.12.11 |
---|---|
Java 함수형 인터페이스 (0) | 2023.12.11 |
Java wait()과 notify() (0) | 2023.12.09 |
Java 쓰레드의 동기화(synchronization) (1) | 2023.12.09 |
Java 쓰레드의 실행제어 메서드 (0) | 2023.12.09 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기