-
15주차 과제: 람다식 #15JAVA 기본 2021. 3. 5. 22:16728x90
목표
자바의 람다식에 대해 학습하세요.
학습할 것 (필수)
- 람다식 사용법
- 함수형 인터페이스
- Variable Capture
- 메소드, 생성자 레퍼런스
람다식
함수적 프로그래밍 기법
이점
1. 대용량 데이터 처리시에 유리
데이터 포장 객체를 생성후 처리하는것보다 데이터를 바로 처리하는게 속도에 유리
멀티 코어 cpu에서 데이터를 병렬 처리하고 취합할 때 객체보다는 함수가 유리
2. 이벤트 지향 프로그래밍(이벤트가 발생하면 핸들러 함수 실행)에 적함
반복적인 이벤트 처리는 핸들러 객체보다는 핸들러 함수가 적합
함수 람다식 int max(int a. int b){
return a>b?a:b;
}
(a, b) -> a > b ? a : b 람다식 사용법
반환타입과 이름을 지우고 "->"울 불록{}앞에 추가한다.
+추가 규칙
1. 반환값이 있는경우 return문 생락가은(끝에';'안붙임)
2. 매개변수의 타입이 추론 가능하면 생략가능
주의사항
1. 매개변수가 하나인 경우, 괄호 생략가능(타입이 없을떄만)
2. 블록 안의 문장이 하나 뿐일 떄, 관호 {}생략가능(끝에 ';' 안붙임)
단 하나뿐인 문장이 return문이면 괄호 생략 불가
타겟 타입
람다식이 대입되는 인터페이스
익면 구현 객체를 만들 때 사용할 인터페이스이다.
인터페이스 변수 = 람가식;
( 타겟타입 )
함수형 인터페이스
단 하나의 추상 메소드만 선언된 인터페이스
함수형 인터페이스를 선언하고 그 인터페이스의 참조변수로 람다식을 참조할 수 있다.
(단, 함수형 인터페이스의 메소드와 람다식의 매개변수 개수와 반환타입이 일치해야함)
클래스의 멤버사용
람다식 실행 블럭에서는 클래스의 멤버인 필드와 메소드를 제약없이 사용가능하다.
람다식 실행 블록내에서는 this는 람다식을 실행한 객체의 참조이다.
>이름이 같을 때 바깥 객체의 참조를 얻기 위해서는 (클래스명.this)사용
Variable Capture(로컬 변수 사용)
람다식에서 외부 변수를 참조하는 것
메소드 참조
메소드를 참조해서 매개변수의 정보 및 리턴타입을 알아내어 람다식에 불필요한 매개변수를 제거하는것이 목적이다.
종종 람다식은 기존 메소드를 단순하게 호출만 하는 경우가 있다.
(left, right) -> Math.max(left, right);
Math :: max; ->메소드 참조
생성자 참조
(a,b) -> {return new 클래스(a, b);) -> 클래스 :: new
실행부에 객체를 생성라고 리턴만 할 경우 생성자 참조 사용가능
'JAVA 기본' 카테고리의 다른 글
자바별찍기 (0) 2021.10.15 Servlet의 기본구성 (0) 2021.05.02 14주차 과제: 제네릭 #14 (0) 2021.03.01 13주차 과제: I/O #13 (0) 2021.02.28 12주차 과제: 애노테이션 #12 (0) 2021.02.28