자바에서 메소드 레퍼런스는 특정 메소드만을 호출하는 람다 표현식을 더 간단하게 표현할 수 있는 방법입니다. 메소드 레퍼런스는 함수형 인터페이스의 구현을 위해 이미 정의된 메소드를 참조하는 데 사용됩니다. 이 구문은 코드를 더 간결하게 만들어주며, 가독성을 향상시키는 데 도움을 줍니다.
정적 메소드 참조
1. 클래스의 정적 메소드를 참조:
문법: 클래스명::메소드명
Arrays.sort(numbers, Integer::compare);
2. 특정 객체의 인스턴스 메소드 참조:
문법: 객체참조::메소드명
List<String> messages = Arrays.asList("Hello", "World");
messages.forEach(System.out::println);
3. 임의 객체의 인스턴스 메소드 참조: 같은 타입의 어떤 객체에서도 호출될 수 있는 인스턴스 메소드를 참조
문법: 클래스명::메소드명
List<String> names = Arrays.asList("Steve", "Anna");
int totalLength = names.stream()
.mapToInt(String::length)
.sum();
4. 생성자 참조: 클래스의 생성자를 참조합니다.
문법: 클래스명::new
List<String> names = Arrays.asList("Java", "Kotlin");
List<Person> people = names.stream()
.map(Person::new)
.collect(Collectors.toList());
메소드 레퍼런스는 람다 표현식을 사용하는 곳에서 대체로 사용될 수 있으며, 코드의 재사용성과 간결성을 증가시킵니다. 또한, 메소드 레퍼런스는 명확한 의도를 전달하기 때문에 프로그램의 가독성을 높이는 데 효과적입니다.