2022 / 9 / 30 금
2022 / 10 / 4 화
- 람다식
- 클래스 멤버, 로컬 변수 사용
- 표준 API 함수적 인터페이스
✔ 람다식
자바8 = jdk1.8 같은의미!
람다식이란?
익명 함수를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝다.
람다식을 사용하면 코드가 매우 간결해지며, 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계 할 수 있다.
람다식 기본 문법
함수적 스타일의 람다식을 작성하는 방법은 다음과 같다.
(타입 매개변수, ... ) -> { 실행문; ...}
( int a ) -> { System.out.println(a); }
람다식 문법 특징
- 매개 타입은 런타임시에 대입값 따라 자동 인식 -> 생략 가능
- 하나의 매개변수만 있을 경우에는 괄호( ) 생략 가능
- 하나의 실행문만 있다면 중괄호 { } 생략 가능
- 매개변수가 없다면 괄호 ( ) 생략 불가
- 리턴값이 있는 경우, return 문 사용
- 중괄호 { }에 return 문만 있을 경우, 중괄호 생략 가능
타겟 타입 (Target type)
람다식은 인터페이스 변수에 대입된다.
즉 람다식은 인터페이스의 익명 구현 객체를 생성한다는 뜻 !
인터페이스 변수 = 람다식 ;
함수적 인터페이스 (functional interface)
람다식은 하나의 메소드를 정의하기에 두 개 이상의 추상 메소드가 선언된 인터페이스는 람다식을 이용할 수 없다.
하나의 추상 메소드가 선언된 인터페이스만이 람다식의 타겟타입이 된다. 이를 함수적 인터페이스라 한다.
@FunctionalInterface
함수적 인터페이스 작성 시, 두개 이상의 추상메소드가 선언되지 않도록 컴파일러가 체킹해주는 기능
✔ 클래스 멤버와 로컬 변수 사용
람다식 실행 블록에는 클래스 멤버인 필드와 메소드를 제약없이 사용가능하다.
🔔 람다식에서의 this는 람다식을 실행한 객체의 참조이다 !!
로컬변수사용
람다식은 로컬 익명 구현 객체를 생성시킨다고도 볼 수 있다.
람다식에서 바깥 클래스 필드나 메소드는 제한 없이 사용가능하나, 메소드의 매개 변수 또는 로컬 변수를 사용하면
이 두변수는 final 특성을 가져야한다.
✔ 표준 API 함수적 인터페이스
종류 | 추상메소드 특징 |
Consumer | 매개값은 있고, 리턴값은 없음 |
Supplier | 매개값은 없고, 리턴값은 있음 |
Function | 매개값도 있고, 리턴값도 있음 주로 매개값을 리턴값으로 매핑(타입변환) |
Operator | 매개값도 있고, 리턴값도 있음 주로 매개값을 연산하고 결과를 리턴 |
Predicate | 매개값은 있고, 리턴 타입은 boolean 매개값을 조사해서 ture / false를 리턴 |
'🏃♀️ Do it ! > TIL' 카테고리의 다른 글
네트워크 기초 (0) | 2022.10.07 |
---|---|
입력 스트림, 출력 스트림 (0) | 2022.10.05 |
제네릭 / 멀티 타입 파라미터 / 제네릭 메소드 / 버블 소트 (0) | 2022.09.30 |
Set 컬렉션 / Map 컬렉션 / 이진 트리 / 스택 & 큐 (0) | 2022.09.28 |
스레드 그룹 / 스레드폴 / 컬렉션 프레임워크 (0) | 2022.09.27 |