728x90
더블 콜론 :: (메서드 참조 Method Reference)❓
메서드 참조(Method Reference)는 자바 8에서 도입된 기능으로, 기존 메서드를 참조하여 람다 표현식을 더욱 간단하게 작성할 수 있도록 합니다.
람다식에서 파라미터를 중복해서 사용하고 싶지 않을 때 사용하며, 람다식과 동일한 처리 방법을 갖습니다.
메서드 참조는 다음과 같은 네 가지 유형이 있습니다
- 정적 메서드 참조 (Static Method Reference)
- 인스턴스 메서드 참조 (Instance Method Reference)
- 생성자 참조 (Constructor Reference)
메서드 참조 사용 방법
[인스턴스]::[메소드명(or new)]
- 람다 표현식 () ➡️ {}에서만 사용 가능
- static 메서드인 경우 인스턴스 대신 클래스 이름으로 사용
정적 메서드 참조
메서드 참조 사용 ❌
import java.util.function.Function;
public class StaticMethodReferenceExample {
public static void main(String[] args) {
Function<String, Integer> parseIntLambda = s -> Integer.parseInt(s);
System.out.println(parseIntLambda.apply("123")); // 출력: 123
}
}
메서드 참조 사용 ✅
import java.util.function.Function;
public class StaticMethodReferenceExample {
public static void main(String[] args) {
Function<String, Integer> parseIntMethodRef = Integer::parseInt;
System.out.println(parseIntMethodRef.apply("123")); // 출력: 123
}
}
인스턴스 메서드 참조
메서드 참조 사용 ❌
import java.util.Arrays;
import java.util.List;
public class InstanceMethodReferenceExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("Java", "Python", "C++");
words.forEach(word -> System.out.println(word.toLowerCase()));
}
}
메서드 참조 사용 ✅
import java.util.Arrays;
import java.util.List;
public class InstanceMethodReferenceExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("Java", "Python", "C++");
words.forEach(String::toLowerCase);
}
}
생성자 참조
생성자도 일종의 메소드 이기 때문에 메서드 참조가 가능합니다.
리턴값이 단순히 객체를 생성하는 것이기 때문에 적용이 가능한 것입니다.
대신 생성자는 고유 메서드명이 없기 때문에 new로 표시합니다.
메서드 참조 사용 ❌
import java.util.function.Function;
public class ConstructorReferenceExample {
public static void main(String[] args) {
Function<String, StringBuilder> stringBuilderCreator = s -> new StringBuilder(s);
StringBuilder sb = stringBuilderCreator.apply("Hello");
System.out.println(sb.toString()); // 출력: Hello
}
}
메서드 참조 사용 ✅
import java.util.function.Function;
public class ConstructorReferenceExample {
public static void main(String[] args) {
Function<String, StringBuilder> stringBuilderCreator = StringBuilder::new;
StringBuilder sb = stringBuilderCreator.apply("Hello");
System.out.println(sb.toString()); // 출력: Hello
}
}
위 예제들을 통해 메서드 참조(더블 콜론 ::)가 람다 표현식을 더욱 간결하게 표현할 수 있는지 알 수 있었습니다.
'Language > Java' 카테고리의 다른 글
[Java] toBinaryString(), toHexString(), toOctalString() , parseInt() 알아보기 (n진법 변환) (1) | 2024.06.09 |
---|---|
[JAVA] Character.isLetter() & Character.isDigit() 메서드 알아보기 (1) | 2024.06.04 |
[Java] toCharArray() 메소드 알아보기 (문자열 ➡️ char배열) (1) | 2024.06.02 |
[JAVA] Collections.sort vs Arrays.sort 차이점 알아보기 (0) | 2024.05.31 |
[JAVA] contains() 메소드 알아보기 (문자열 포함 여부 확인) (0) | 2024.05.23 |