메서드 참조

2022. 4. 12. 15:45·자바/람다식

1. 메서드 참조란?

- 메서드 참조는 람다식보다 더욱 간결하게 표현할 수 있는 방법이다. 그러나, 매번 적용할 수 있는 것이

아니고, 람다식이 하나의 메서드만 호출하는 경우에 해당된다.

 

 

- 총 3가지 경우의 메서드 참조가 있는데, 아래의 예시 코드를 보고 이해하자.

(1) static 메서드 참조

: 람다식은 "(x) -> ClassName.method(x)" 이다.

: 메서드 참조는 "ClassName::method" 이다.

 

 

 

(2) 인스턴스 메서드 참조

: 람다식은 "(obj, x) -> obj.method(x)" 이다.

: 메서드 참조는 "ClassName::method" 이다.

 

 

 

(3) 특정 객체 인스턴스메서드 참조

: 람다식은 "(x) -> obj.method(x)" 이다.

: 메서드 참조는 "obj::method" 이다.

 

MyClass obj = new MyClass();

 

Function<String, Boolean> f1 = (x) -> obj.equals(x)

//람다식

 

Function<String, Boolean> f2 = obj::equals;

//메서드 참조

 

 

 

- 하나의 메서드만 호출하는 람다식은 아래와 같이 바꿀 수 있다.

(1) 클래스이름::메서드이름

(2) 참조변수::메서드이름

 

 

 

 

2. 생성자의 메서드 참조

- 생성자를 호출하는 람다식도 메서드 참조로 변환할 수 있다.

 

Supplier<MyClass> s1 = () -> new MyClass();

//람다식

 

Supplier<MyClass> s2 = MyClass::new;

//메서드 참조

 

( 매개변수와 상관없이 메서드 참조의 형식은 모두 똑같다. )

 

 

- 배열은 아래와 같이 해주면 된다.

 

Function<Integer, int[]> f1 = x -> new int[x];

//람다식

 

Function<Integer, int[]> f2 = int[]::new;

//메서드 참조

'자바 > 람다식' 카테고리의 다른 글

Function의 합성과 Predicate의 결합  (0) 2022.04.12
java.util.function 패키지  (0) 2022.04.11
함수형 인터페이스  (0) 2022.04.11
람다식의 기본 개념  (0) 2022.04.11
'자바/람다식' 카테고리의 다른 글
  • Function의 합성과 Predicate의 결합
  • java.util.function 패키지
  • 함수형 인터페이스
  • 람다식의 기본 개념
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      다형성
      java.time 패키지
      중간연산
      코딩트리조별과제
      람다식
      제자리 정렬
      역직렬화
      Collections Framework
      자바 개념
      유용한 클래스
      안드로이드 스튜디오
      알고스팟
      map()
      코드트리
      스트림
      문자 기반 스트림
      java.lang패키지
      file
      소켓 프로그래밍
      serializable
      ServerSocket
      선택 정렬
      코딩테스트
      Arrays
      TCP 소켓 프로그래밍
      안정 정렬
      snail
      불안정 정렬
      outputstream
      InputStream
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    메서드 참조
    상단으로

    티스토리툴바