JAVA

[JAVA] 람다식 표현을 메서드 참조 방식으로 변경하기 + 장점

오선지♬ 2025. 5. 9. 19:52
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
반응형