728x90
반응형
✅ 1. 메서드 참조로 변환 예제
유형 | 람다식 | 메서드 참조 | 설명 |
정적 메서드 참조 | x -> Math.abs(x) | Math::abs | 클래스의 static 메서드를 참조 |
인스턴스 메서드 (특정 객체) | s -> s.toLowerCase() | String::toLowerCase | 인스턴스 메서드 참조 |
인스턴스 메서드 (임의 객체) | x -> x.equals("A") | "A"::equals | 특정 값의 메서드를 참조 |
생성자 참조 | () -> new ArrayList<>() | ArrayList::new | 생성자를 참조 |
배열 생성자 | size -> new int[size] | int[]::new | 배열 생성자 참조 |
✅ 예제 코드
📌 예제 1: forEach에서 출력
// 람다식
list.forEach(item -> System.out.println(item));
// 메서드 참조
list.forEach(System.out::println);
📌 예제 2: 정렬 (Comparator)
// 람다식
list.sort((a, b) -> a.getName().compareTo(b.getName()));
// 메서드 참조
list.sort(Comparator.comparing(MyObject::getName));
📌 예제 3: 대소문자 변환
// 람다식
names.stream().map(s -> s.toUpperCase());
// 메서드 참조
names.stream().map(String::toUpperCase);
📌 예제 4: 생성자 참조
// 람다식
Supplier<List<String>> listSupplier = () -> new ArrayList<>();
// 메서드 참조
Supplier<List<String>> listSupplier = ArrayList::new;
✅ 메서드 참조의 장점
장점 | 설명 |
✅ 간결성 | 불필요한 람다식을 제거하고 한 줄로 표현 가능 |
✅ 가독성 | 익숙한 메서드 이름이 바로 보이므로 이해가 빠름 |
✅ 의도 명확화 | 메서드 호출 목적을 직접적으로 표현 |
✅ 코드 재사용성 증가 | 공통된 동작을 메서드 참조로 통일 가능 |
✅ IDE 최적화 | 리팩토링 및 코드 자동 완성에 유리함 |
✅ 주의사항
- 람다 내부에서 로직이 2줄 이상일 경우 메서드 참조로 바꿀 수 없습니다.
- 메서드 참조는 익숙하지 않은 개발자에게는 의미가 불명확할 수 있으므로 문맥에 따라 사용하는 것이 중요합니다.
728x90
반응형
'JAVA' 카테고리의 다른 글
[JAVA] Stream보다 forEach가 더 나은 경우 (0) | 2025.05.10 |
---|---|
[JAVA] 특정 값 배열에 포함되는지를 체크 (JAVA8 이후) (0) | 2025.05.08 |
[JAVA] 특정 값 배열에 포함되는지를 체크 (JAVA8 이전) (0) | 2025.05.07 |
[JAVA] List<String> 각 항목에 ' 붙이기 (1) | 2025.05.03 |
[JAVA] stream null 제거 (0) | 2025.05.02 |