Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 연습문제
  • 이것이자바다
  • 비쥬얼스튜디오코드
  • 기간설정
  • 오류해결
  • 백준
  • Eclipse
  • 콜라보레이토리
  • 코딩앙마
  • Database
  • 시작일종료일
  • 기간쿼리
  • SQLD합격후기
  • oracle
  • 노마드코더
  • spring
  • java
  • colaboratory
  • 파이썬온라인
  • Javascript
  • sql기간
  • HTML
  • CSS
  • AllArgsConstructor
  • 창초기화
  • googlecolaboratory
  • 독학후기
  • 서버등록
  • SQLD합격
  • SQL

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

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

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

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
저작자표시 (새창열림)

'🏫 Open API_JAVA' 카테고리의 다른 글

[51일차] InputStream / OutputStream / Reader / Writer / 콘솔 입출력  (0) 2022.10.07
[50일차] andThen()과 compose() 디폴트 메소드 / 메소드 참조 / 입력 스트림과 출력 스트림  (0) 2022.10.05
[48일차] 제네릭 타입 / 멀티 타입 파라미터 / 제네릭 메소드 / 제한된 타입 파라미터 / 와일드카드 타입 / 제네릭 타입의 상속과 구현  (0) 2022.09.29
[47일차] Set 컬렉션(HashSet) / Map 컬렉션(HashMap, Hashtable, Properties) / 검색 기능을 강화시킨 컬렉션 / LIFO와 FIFO 컬렉션  (0) 2022.09.29
[46일차] 스레드 그룹 / 스레드풀 / 컬렉션 프레임워크 / List 컬렉션  (0) 2022.09.28
    '🏫 Open API_JAVA' 카테고리의 다른 글
    • [51일차] InputStream / OutputStream / Reader / Writer / 콘솔 입출력
    • [50일차] andThen()과 compose() 디폴트 메소드 / 메소드 참조 / 입력 스트림과 출력 스트림
    • [48일차] 제네릭 타입 / 멀티 타입 파라미터 / 제네릭 메소드 / 제한된 타입 파라미터 / 와일드카드 타입 / 제네릭 타입의 상속과 구현
    • [47일차] Set 컬렉션(HashSet) / Map 컬렉션(HashMap, Hashtable, Properties) / 검색 기능을 강화시킨 컬렉션 / LIFO와 FIFO 컬렉션
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바