티스토리 뷰
람다란?
메서드로 전달할 수 있는 익명함수를 단순화 한 것입니다.
함수형 프로그래밍(Functional Language)에서 온 개념으로 매개변수(parameter)를 가진 코드 블록이지만, 런타임 시에는 익명 구현 객체(추상메소드를 한개 포함한)를 생성합니다.
아래와 같이 자바8 이전에는 메서드를 값으로 쓸 수 없어 매개변수로 넘기지 못했습니다.
그래서 익명구현객체를 인스턴스화 시켜서 넘겨주었습니다.
new Thread(new Runnable()
{
public void run()
{
System.out.println("자바 8이전의 스레드 생성");
}
}).start();
이런 부분을 해결하기 위해서 자바 8에서 람다를 사용해 메서드를 값으로 넘길 수 있었습니다.(익명구현객체를 자동으로 만들어줌)
new Thread(()->{
System.out.println("람다 표현식을 사용한 스레드 생성");
}).start();
람다의 기본 문법은 이렇습니다
// 인자 -> 바디
(int a, int b) -> { return a + b; }
// 인자 타입 생략 - 컴파일러가 추론
(a, b) -> { return a + b; }
// return 및 중괄호 생략
(a, b) -> a + b
// 인자가 하나인 경우 인자 괄호 생략
a-> a * 2
// 인자가 없으면 빈 괄호로 표시
() -> System.out.println("hi joeylee")
// 메소드 참조 Method reference
// (value -> System.out.println(value)) 의 축약형
System.out::println
@FunctionalInterface 어노테이션을 붙이면 익명 클래스용 인터페이스를 생성할 수 있습니다. (단 하나의 추상 메소드만을 가진 인터페이스)
@FunctionalInterface
interface Calculation {
Integer apply(Integer x, Integer y);
}
Calculation addition = (x, y) -> x + y;
Calculation subtraction = (x, y) -> x - y;
사용이유
- 람다식은 결국 로컬 익명 구현객체를 생성하게 되지만, 이 람다식의 사용 목적은 인터페이스가 가지고 있는 메소드를 간편하게 즉흥적으로 구현해서 사용하는 것이 목적입니다.
- 코드를 간결하게 만들고 가독성이 향상됩니다.
'Java' 카테고리의 다른 글
[Java] JVM 구조 (0) | 2020.11.27 |
---|---|
[Java] Object 도서 정리(2) (0) | 2020.11.23 |
[Java] Object 도서 정리(1) (0) | 2020.11.23 |
[Java] 리액티브(reactive) 프로그래밍이란? (0) | 2020.11.23 |
[Java] 제이미터(jmeter)란? (0) | 2020.11.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Today
- Yesterday
링크
TAG
- JMeter
- gslb
- Java
- jvm
- object
- strategy
- in-memory
- 영속성
- observable
- Serializable
- 부하테스트
- concurrency
- reactive stream
- Effective JAVA
- Spring
- Serialize
- template method
- 메인보드#asrock b650m #조립pc #후기이벤트
- nosql
- LAMBDA
- exception
- jdk11
- reactive
- Observer Pattern
- Design Pattern
- 디자인패턴
- Redis
- Concurrecy
- template
- iterable
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함