Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 구글 OAuth login
- 파이썬
- 디자인 패턴
- 디자인패턴
- JavaScript
- jwt
- 개발자부트캠프추천
- 빈 충돌
- Python
- KPT회고
- 프로그래머스
- 커스텀 헤더
- 전략패턴 #StrategyPattern #디자인패턴
- infcon 2024
- 인프콘 2024
- spring batch 5.0
- 프로그래머스 이중우선순위큐
- 빈 조회 2개 이상
- 취업리부트코스
- 개발자 취업
- 단기개발자코스
- 코딩테스트 준비
- @FeignClient
- 항해99
- jwttoken
- 1주일회고
- DesignPattern
- 99클럽
- TiL
- Spring multimodule
Archives
- Today
- Total
m1ndy5's coding blog
람다식 본문
람다식은 함수형 프로그래밍 기법을 지원하는 자바의 문법 요소
자바에서 메서드를 사용하려면 항상 클래스 객체를 먼저 생성한 후 생성한 객체로 메서드를 호출해야 한다.
이를 해결하기 위해 나온 방법이 람다식이다.
단 하나의 추상 메서드만을 포함하는 인터페이스를 함수형 인터페이스라고 하고, 이 함수형 인터페이스의 호출 및 기능을 구현하는 방법을 새롭게 정의한 문법이 바로 람다식이다.
정리하자면 람다식은 기존의 객체 지향 프로그램 체계 안에서 함수형 프로그래밍을 가능하게 하는 기법이라고 생각할 수 있다.
객체 지향 구조 내에서 람다식 적용 과정
interface A {
void abc();
}
class B implements A {
public void abc(){...}
}
// 사용할 때
A a = new B();
a.abc();
이 내용을
A a = () -> {};
이렇게 익명 이너클래스의 메서드 정의 부분만 가져와 메서드를 정의하고 호출한다.
람다식은 익명 이너클래서의 축약된 형태라고 보면 된다.
람다식의 기본 문법 및 약식 표현
리턴타입 메서드명(입력매개변수){
// 메서드 내용
}
이거를
(입력매개변수) -> {
// 메서드 내용
}
이렇게 사용할 수 있다.
람다식의 약식 표현
// 중괄호 안의 실행문이 1개일 때 중괄호 생략 가능
A a = () -> System.out.println("테스트");
// 매개변수 타입의 생략이 가능하고, 매개변수가 1개일 때 () 생략 가능
A a = a -> {...};
// return 구문만 포함할 때 return 생략 가능
// 중괄호도 반드시 같이 생략해 주어야함
A a = (int a, int b) -> a+b;
정의돼 있는 인스턴스 메서드 참조
클래스 객체::인스턴스 메서드명
interface A{
void abc();
}
class B{
void bcd(){
System.out.println("메서드");
}
}
B b = new B();
A a = b::bcd;
정의돼 있는 정적 메서드 참조
클래스명::정적 메서드명
interface A{
void abc();
}
class B{
static void bcd(){
System.out.println("메서드");
}
}
A a = B::bcd;
첫 번째 매개변수로 전달된 객체의 인스턴스 메서드 참조
interface A{
void abc(B b, int k);
}
class B{
void bcd(int k){
System.out.println(k);
}
}
A a1 = (B b, int k) -> {b.bcd(k);};
A a2 = B::bcd;
a2.abc(new B(), 3);
생성자 참조
interface A{
int[] abc(int len);
}
interface B{
C abc();
}
A a = int[]::new;
B b = C::new;
'백엔드 with java > java' 카테고리의 다른 글
String VS StringBuffer (0) | 2024.03.25 |
---|---|
ABOUT SERVLET, WAS, SERVLET CONTAINER (0) | 2023.06.22 |
자바 클래스 & 객체 (0) | 2023.05.29 |
ABOUT JAVA, 환경 변수 등록 (0) | 2023.05.29 |