✔️ Lambda
Lambda란?
- 메소드를 하나의 식으로 표현한 것
- 매개변수, ->, {} 구조로 이루어지며 메소드의 매개변수로 전달할 수도 있고, 메소드 결과로 반환할 수도 있음
- 인터페이스 내에 한 개의 추상 메소드만 정의하는 함수형 인터페이스를 통해서만 사용이 가능함
예) Compartor, Runnuable - 람다를 이용하면 기존에 익명 함수로 작성하던 코드를 줄여 간단하게 작성이 가능해 가독성이 증가하고 병렬 프로그래밍에 용이
- 하지만 남용할 경우 코드를 이해하는데 어려우면 재귀 활용과 디버깅에 까다로움
- 컴파일러는 invokedynamic을 사용해 람다 표현식 구현을 위한 코드 생성을 런타임 시까지 연기한 후,
런타임 시 어떤 방법으로 객체를 생성할지 결정하는 성능 향상을 위한 최적화된 방법을 사용해 람다 표현식을 처리함
/* 일반 메서드 */
반환타입 메서드이름(매개변수 선언) {
문장들
}
int method(int i) {
return (int)(Math.random() * 5) + 1;
}
/* 람다식 */
(매개변수 선언) -> {
문장들
}
int[] arr = new int[5];
Arrays.setAll(arr, i -> (int)Math.random() * 5) + 1;
'Tech Interview > Language' 카테고리의 다른 글
[Language] 직렬화와 역직렬화 (0) | 2024.03.26 |
---|---|
[Language] Stream (0) | 2024.03.26 |
[Language] 어노테이션 (0) | 2024.03.26 |
[Language] 컬렉션 프레임워크 (0) | 2024.03.25 |
[Language] 제네릭 (0) | 2024.03.25 |
✔️ Lambda
Lambda란?
- 메소드를 하나의 식으로 표현한 것
- 매개변수, ->, {} 구조로 이루어지며 메소드의 매개변수로 전달할 수도 있고, 메소드 결과로 반환할 수도 있음
- 인터페이스 내에 한 개의 추상 메소드만 정의하는 함수형 인터페이스를 통해서만 사용이 가능함
예) Compartor, Runnuable - 람다를 이용하면 기존에 익명 함수로 작성하던 코드를 줄여 간단하게 작성이 가능해 가독성이 증가하고 병렬 프로그래밍에 용이
- 하지만 남용할 경우 코드를 이해하는데 어려우면 재귀 활용과 디버깅에 까다로움
- 컴파일러는 invokedynamic을 사용해 람다 표현식 구현을 위한 코드 생성을 런타임 시까지 연기한 후,
런타임 시 어떤 방법으로 객체를 생성할지 결정하는 성능 향상을 위한 최적화된 방법을 사용해 람다 표현식을 처리함
/* 일반 메서드 */
반환타입 메서드이름(매개변수 선언) {
문장들
}
int method(int i) {
return (int)(Math.random() * 5) + 1;
}
/* 람다식 */
(매개변수 선언) -> {
문장들
}
int[] arr = new int[5];
Arrays.setAll(arr, i -> (int)Math.random() * 5) + 1;
'Tech Interview > Language' 카테고리의 다른 글
[Language] 직렬화와 역직렬화 (0) | 2024.03.26 |
---|---|
[Language] Stream (0) | 2024.03.26 |
[Language] 어노테이션 (0) | 2024.03.26 |
[Language] 컬렉션 프레임워크 (0) | 2024.03.25 |
[Language] 제네릭 (0) | 2024.03.25 |