티스토리 뷰
chapter 14. 람다식
최근, 함수적 프로그래밍이 다시 부각중 => 병렬 처리, 이벤트 지향 프로그래밍에 적합함
람다식은 익명 함수(anonymous function)를 생성하기 위한 식으로, 객체 지향 언어보다는 함수 지향 언어에 가까움
자바 코드가 간결해지고, 컬렉션 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있음
람다식 -> 매개 변수를 가진 코드 블록 -> 익명 구현 객체 |
14.2 람다식 기본 문법
(타입 매개변수, ...) -> {실행문; ...}
(타입 매개변수) 는 오른쪽 중괄호 {} 블록을 실행하기 위해 필요한 값을 제공하는 역할
매개 변수의 이름은 자유롭게 쓸 수 있음
-> 기호는 매개 변수를 이용해 중괄호 {} 를 실행한다는 뜻
매개 변수 타입은 런타임 시에 대입되는 값에 따라 자동으로 인식될 수 있기 때문에 람다식에서는 매개 변수의 타입을 언급하지 않음
따라서
(int a) -> {System.out.println(a); } 가 아니라
a -> {System.out.println(a); }와 같이 사용함
- 하나의 매개 변수가 있다면 괄호 ()를 생략할 수 있고 , 중괄호 {}도 생략 가능
- 그러나 매개변수가 없다면 람다식에서 매개 변수 자리가 없어지므로 빈 괄호()를 반드시 사용해야 함
- 중괄호{}에 return문만 있을 경우, 람다식에서는 return문을 사용하지 않고 작성함
(x, y) -> {return x+y; }가 아니라
(x, y) -> x+y 와 같이 사용함
14.3 타겟 타입과 함수적 인터페이스
람다식은 단순히 메소드를 선언하는 것이 아닌 메소드를 가진 객체를 생성해냄
람다식은 인터페이스 변수에 대입 => 람다식은 인터페이스의 익명 구현 객체를 생성한다는 뜻
람다식은 익명 구현 클래스를 생성하고 객체화함
대입되는 인터페이스의 종류에 따라 작성 방법이 달라지기 때문에 람다식이 대입될 인터페이스를 람다식의 타겟 타입(target type)이라고 함
14.3.1 함수적 인터페이스(@FunctionalInterface)
하나의 추상 메소드가 선언된 인터페이스만이 람다식의 타겟 타입이 될 수 있음 => 함수적 인터페이스(functional interface)
@FunctionalInterface 어노테이션 : 두 개 이상의 추상 메소드가 선언되면 컴파일 오류를 발생시킴
'Language > JAVA' 카테고리의 다른 글
이클립스에서 디버깅 (0) | 2023.04.20 |
---|---|
File (0) | 2023.04.18 |
스무번째날[IO 기반 입출력 및 네트워킹(2) - 네트워크 / TCP / UDP] (0) | 2022.08.19 |
열아홉번째날[IO기반 입출력 및 네트워킹(1) - IO 패키지 소개 / 입력 스트림 / 출력 스트림 / 콘솔 / 파일 입출력 / 보조 스트림 ] (0) | 2022.08.18 |
열여덟번째날[컬렉션 프레임워크] (0) | 2022.08.16 |
- Total
- Today
- Yesterday
- 문자열함수
- 리스트연산자
- 리스트
- 파이썬
- Objects 클래스
- 함수
- 스레드 스케줄링
- 포장 클래스
- Date 클래스
- Math 클래스
- StringTokenizer 클래스
- python
- 역반복문
- 기본 API 클래스
- 순환할당
- java.time.package
- 요소선택
- StringBuilder 클래스
- Calendar 클래스
- Format 클래스
- Arrays 클래스
- not_in
- 프로그램
- 딕셔너리
- Pattern 클래스
- IndexError
- 자료형
- StringBuffer 클래스
- Random 클래스
- FALSE
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |