Notice
suyeonme
[Java] 메서드 참조(Method Reference)란? 본문
메서드 참조(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();
'프로그래밍👩🏻💻 > Java' 카테고리의 다른 글
[Java] CheckedException, UnCheckedException이란? (0) | 2023.04.02 |
---|---|
[Java] Optional 클래스 (0) | 2023.04.01 |
[Java] 람다 표현식(Lamda Expression)과 함수형 인터페이스(Functional Interface) (0) | 2023.03.01 |
[Java] Boxing, Unboxing이란? (0) | 2023.03.01 |
[Java] Servlet이란? (1) | 2022.10.11 |
Comments