🏫 Open API_JAVA

[49일차] 람다식 기본 문법 / 타겟 타입과 함수적 인터페이스 / 표준 API의 함수적 인터페이스

Dorothy_YANG 2022. 10. 3. 11:12
728x90

20220930(금)

  • 목차 
    - 람다식 기본 문법
    - 타겟 타입과 함수적 인터페이스 
    - 클래스 멤버와 로컬 변수 사용
    - 표준 API의 함수적 인터페이스 

< 람다식 기본 문법>

  • 람다식?
    - 자바 8부터 함수적 프로그래밍 위해 람다식 지원   // 자바8 = jdk1.8 같은의미!
    - 기존에 존재하던 람다식을 가져다 쓴 것임!! 👍

  • 람다식 수용 이유
    - 코드가 매우 간결해짐
    - 컬렉션 요소(대용량 데이터)를 필터링 또는 매핑해 쉽게 집계
스레드의 익명구현객체 (일회성으로 코드작업) 일반적인 클래스 설계 및 객체생성구문
Runnable runnable = new Runnable() {
     public void run() {....}
};
class Test implements Runnable {
     public void run() {...}
}
Test obj = Test();
클래스 없이 일회성으로 만든 익명구현객체.
run메소드 코드를 다른 쪽에서 쓸 수 없다.
명시적 클래스 설계하고 객체 생성

⬇⬇

람다식 구문. = 익명함수(메소드명이 사라졌기 때문)
(위 주황색 부분 ➡ 아래 빨간색 부분으로 줄임)
Runnable runnable = () -> {...};

람다식 문법이란,,
함수(메소드)
(매개변수...) -> { }
어떤 인터페이스를 구현할지는 대입되는 인터페이스에 달려있음
단, 인터페이스에서 추상메소드는 반드시 1개만 사용가능.

 

  • 자바는 람다식을 함수적 인터페이스의 익명 구현 객체로 취급(내부적으론 익명 구현 객체가 만들어짐)
    람다식 ➡ 매개변수를 가진 코드 블록 ➡ 익명 구현 객체

  • 익명구현객체 ➡ 람다식으로 바꾸기

     ✨함수적 스타일의 람다식 작성법 ➡ 메소드를 바라보고 만든다!

    - 타입 추론 : 매개 타입은 런타임시에 대입값 따라 자동인식되어 생략 가능 / Student 타입 생략가능
                        ex) function.apply(student) ➡ ((Student t) ➡ t.getName(); = t ➡ t.getName();

    - 매개변수 괄호() 의자라고 생각!
      : (int a) -> {System.out.println(a);}
      : 매개 타입은 런타임시에 대입값 따라 자동 인식 ➡ 생략 가능

      : 하나의 매개변수만 있다면 괄호() 생략 가능, but 매개변수 없다면 괄호 () 생략 불가

      : 하나의 실행문만 있다면 중괄호{} 생략 가능

      : 중괄호 안에 return만 있을 경우, 생략 가능

 

 


< 타겟 타입과 함수적 인터페이스 >

  • 타겟 타입(target type)
    - 람다식이 대입되는 인터페이스
    - 인터페이스 변수 = 람다식;

(1) 함수적 인터페이스 @FunctionalInterface

 : 두 개 이상의 추상 메소드가 선언되지 않도록 컴파일러가 체킹해주는 기능

 

(2) 매개 변수와 리턴값이 없는 람다식

 : Method()가 매개 변수를 가지지 않는 경우
 : MyFunctionalInterface fi = () -> {...}

(3) 매개변수가 있는 람다식

 : MyFunctionalInterface fi = (x) -> {...} 또는 x -> {...}

 

(4) 리턴값이 있는 람다식

 : MyFunctionalInterface fi = (x, y) -> {...; return 값;}


< 표준 API의 함수적 인터페이스 >

  • 강제적 규칙제공 : 전체 메소드가 통일을 갖기 때문에 관리가 쉬워짐

대표적 함수적 인터페이스 5개 암기! (JDK에서 제공하는)

함수적 인터페이스
매개값 리턴값 설명
Consumer 소비자 O X accept
쓰고 나서 버린다. 가져오지 않아! (변수)
Supplier 공급자 X O get / getAs
실행 후 호출한 곳으로 데이터를 리턴
Function  함수 O O apply
주로 매개값을 리턴값으로 매핑(타입 변환) (매개변수)
Operator  연산 O O applyAs
주로 매개값을 연산하고 결과를 리턴
Predicate  조건 O boolean boolean test
매개값을 조사해서 true/false를 리턴

 

 

728x90