suyeonme

[Java] 메서드 참조(Method Reference)란? 본문

프로그래밍👩🏻‍💻/Java

[Java] 메서드 참조(Method Reference)란?

suyeonme 2023. 3. 1. 16:04

메서드 참조(Method Reference)란?


메서드 참조는 특정 메서드만을 호출하는 람다의 축약형이다. 메서드명 앞에 ::를 붙여서 메서드 참조를 활용한다. 메소드 참조를 이용하여 하나의 메서드를 참조하는 람다를 간결하고 편리하게 표현할 수 있으며 명시적으로 메서드명을 참조함으로써 가독성을 높일수 있다.

// 기존 코드
inventory.sort((Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWegith()));

// 메서드 참조를 이용(위와 동일)
inventory.sort(comparing(Apple::getWeight))

 

메서드 참조는 아래와 같이 다양하게 사용할 수 있다.

1) 정적 메서드 참조

(Integer n) -> n.parseInt();
Integer::parseInt

2) 다양한 형식의 인스턴스 메서드 참조

(String s) -> s.toUpperCase();
String::toUpperCase

3) 기존 객체의 인스턴스 메서드 참조

() -> expensiveTransaction.getValue()
expensiveTransaction::getValue

4) 비공개 헬퍼 메서드 정의

private boolean isValidName(String string) {
	return Character.isUpperCase(string.charAt(0));
}

filter(words, this::isValidName)

5) 배열 생성자에 사용

List<String> str = Arrays.asList("a", "b", "A", "B");

str.sort((s1, s2) -> s1.compareToIgnoreCase(s2));
str.sort(String::compareToIgnoreCase)

6) 생성자 참조에 사용

Supplier<Apple> apple = () -> new Apple();
Apple a1 = apple.get();

Supplier<Apple> apple = Apple::new;
Apple a1 = apple.get();
Comments