람다식
: 함수적 프로그래밍( 병렬 처리와 이벤트 지향 프로그래밍에 적합)
자바 코드 간결해지고, 컬렉션 요소를 필터링 하거나 매핑해서 원하는 결과를 쉽게 집계 할 수 있기 때문에
- 람다식 형태 : 매개 변수를 가진 코드 블록이지만, 런타임 시 익명 구현 객체 생성
ex) Runnable runnable = new Runnable(){
public void run(매개변수){..}
}; -> 익명 구현 객체
Runnable runnable = (매개변수)-> {..}; -> 람다식 : 런타임 시 인터페이스의 익명 구현 객체로 생성
- 람다식 기본 문법 : a -> System.out.println(a); ()->{실행문;}
실행문에 return만 있을 시 (x,y)-> x+y;
- 람다식의 형태는 매개변수 가진 코드 블록. 자바의 메소드처럼 보임
-> but,자바는 메소드를 클래스의 구성 멤버로 선언하기 때문 객체 만들어서 사용
인터페이스 변수 = 람다식;
인터페이스 변수에 대입되어 사용 -> 인터페이스의 익명 구현 객체 생성함.
인터페이스는 직접 객체화할 수 없기 때문에 구현 클래스 필요 -> 그래서 람다식이 익명 구현 클래스 생성하고 객체화 함
- 타겟 타입(target type) : 대입될 인터페이스의 종류에 따라 작성 방법이 달라지기 때문에 람다식이 대입될 인터페이스를 람다식의 타겟타입이라 함
1. 함수적 인터페이스 (@Functionallterface)
: 하나의 추상 메소드가 선언된 인터페이스만 람다식의 타겟 될 수 있음. 이런 인터페이스 부르는 말
모든 인터페이스는 람다식의 타겟 타입으로 사용할 수 없음
람다식이 하나의 메소드 정의하기 때문에 두개 이상의 추상 메소드가 선언된 인터페이스는 람다식을 이용해 구현 객체 생성 불가
- @Functionallterface : 두 개 이상의 추상 메소드 선언되지 않도록 컴파일러가 체킹해주는 기능 -> 두개 이상 시 컴파일 오류 발생
2. 매개 변수와 리턴값 없는 람다식
ex) interface MyFunction{ public void method(); //메소드 없음}
MyFunction fi = ()->{...} //매개 변수 없기 때문에
fi.method(); //호출 -> 이때 {...} 익명으로 처리한 실행문들 실행 됨
3. 매개 변수가 있는 람다식
ex)interface MyFunction{ public void method(int x); //메소드 없음}
MyFunction fi = (x)->{...} or x->{...}
fi.method(5); //호출 -> 이때 {...} 익명으로 처리한 실행문들 실행 됨
4. 리턴값 있는 람다식
ex) interface MyFunction{ public void method(int x, int y); //메소드 없음}
MyFunction fi = (x,y)->{... return 값;} or (리턴값만 있을 시) (x,y) -> x+y;
fi.method(2,5); //호출 -> 이때 {...} 익명으로 처리한 실행문들 실행 됨
-<이것이 자바다2>. 한빛미디어
'JAVA' 카테고리의 다른 글
람다식_2 (0) | 2019.06.20 |
---|---|
제네릭 예제_학생 성적 입출 (0) | 2019.06.20 |
제네릭 예제_제네릭 클래스 (0) | 2019.06.20 |
제네릭 예제 (0) | 2019.06.20 |
제네릭 (0) | 2019.06.20 |