베어_
TechBear
베어_
전체 방문자
오늘
어제
  • 분류 전체보기 (336)
    • Spring (33)
      • 개념 (13)
      • Security (5)
      • 실습 (1)
      • 토비 스프링 (11)
    • JPA (6)
    • 프로젝트 기록 (24)
    • DB (13)
    • JAVA (18)
    • 알고리즘 (50)
      • 유형정리 (8)
      • Baekjoon (21)
      • LeetCode (18)
    • 디자인패턴 (0)
    • 개발서적 (79)
      • Effective Java (78)
      • 객체지향의 사실과 오해 (1)
    • 독후감 (4)
    • 보안 (2)
    • 운영체제(OS) (53)
      • 공룡책 (53)
    • 컴퓨터 네트워크 (28)
      • 컴퓨터 네트워크 하향식 접근 (23)
    • 자료구조 (1)
    • DevOps (2)
    • 앱 개발 (20)
      • 안드로이드 스튜디오 (20)

블로그 메뉴

    공지사항

    인기 글

    태그

    • 백준
    • 이펙티브자바
    • 스레드
    • dfs
    • 토비스프링
    • 자바8
    • 알고리즘
    • jpa
    • java
    • 함수형인터페이스
    • 코드업
    • 데이터베이스
    • 자바
    • 스프링
    • C++
    • Spring
    • 스프링시큐리티
    • 운영체제
    • leetcode
    • BFS

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    베어_

    TechBear

    개발서적/Effective Java

    [Effective Java] 표준 함수형 인터페이스를 사용하라

    2023. 5. 31. 23:07

    java.util.function 패키지에는 다양한 용도의 표준 함수형 인터페이스가 담겨 있다.

    기억해야 할 함수형 인터페이스 6개

    1. Operator 인터페이스 - 반환값과 인수의 타입이 같은 함수
      • 인수가 1개인 UnaryOperator
      • 인수가 2개인 BinaryOperator
    T apply(T t)
    String::toLoswerCase 
    
    T apply(T t1, T t2)
    BigInteger::add
    1. Predicate 인터페이스 - 인수 하나를 받아 boolean을 반환하는 함수
    boolean test(T t)
    Collection::isEmpty
    1. Function 인터페이스 - 인수와 반환 타입이 다른 함수
    R apply(T t)
    Arrays::asList
    1. Supplier 인터페이스 - 인수를 받지 않고 값을 반환하는 함수
    T get()
    Instant::now
    1. Consumer 인터페이스 - 인수를 하나 받고 반환값은 없는(인수를 소비하는) 함수
    void accept(T t)
    System.out::println

    전용 함수형 인터페이스 구현하기

    기본적으로 표준 함수형 인터페이스를 사용하는 것이 좋지만, 다음과 같은 조건에서는 전용 함수형 인터페이스를 만드는 것이 좋다. (e.g Comparator)

    1. 자주 쓰이며, 이름 자체가 용도를 명확히 설명해준다.
    2. 반드시 따라야 하는 규약이 있다.
    3. 유용한 디폴트 메서드를 제공할 수 있다.

    함수형 인터페이스를 작성할 때는 꼭 @Functional Interface 애너테이션을 다는 것이 좋다. 이유는 다음과 같다.

    1. 해당 클래스의 코드나 설명 문서를 읽을 이에게 그 인터페이스가 람다용으로 설계된 것임을 알려준다.
    2. 해당 인터페이스가 추상 메서드를 오직 하나만 가지고 있어야 컴파일되게 해준다.
    3. 그 결과 유지보수 과정에서 누군가 실수로 메서드를 추가하지 못하게 막아준다.
    저작자표시 비영리 변경금지 (새창열림)
      '개발서적/Effective Java' 카테고리의 다른 글
      • [Effective Java] 스트림에서는 부작용 없는 함수를 사용하라
      • [Effective Java] 스트림은 주의해서 사용하라
      • [Effective Java] 람다보다는 메서드 참조를 사용하라
      • [Effective Java] 익명 클래스보다는 람다를 사용하라
      베어_
      베어_
      Today I learned | 문제를 해결하는 개발자

      티스토리툴바