JAVA 기본

15주차 과제: 람다식 #15

홍박스 2021. 3. 5. 22:16
728x90

목표

자바의 람다식에 대해 학습하세요.

학습할 것 (필수)

  • 람다식 사용법
  • 함수형 인터페이스
  • 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

실행부에 객체를 생성라고 리턴만 할 경우 생성자 참조 사용가능

728x90

'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