Android 개발/Java, Java8
Java 8의 메서드 참조(Method Reference) 문법 이해하기
Developer88
2024. 11. 2. 16:36
반응형
오늘은 Java8의 메소드 참조 문법에 대해서 알아보겠습니다.
이 문법은 RxJava에서도 사용가능한데,
이를 사용하면 아주 간결한 표현이 가능해집니다.
1. 메소드 참조
이미 이름이 있는 메서드를 람다 표현식으로 사용할 수 있게 해주는 문법입니다.
메소드 참조 문법은 '클래스::메소드' 순서로 적어서 사용하는데요.
예를 들어, String 클래스의 정적 메소드인 toUpperClass는 아래와 같이 사용할 수 있습니다.
String::toUpperCase
그런데 잘 보면, 클래스와 메소드만 있고,
인자로 사용되는 변수명 자체가 사라진 것을 볼 수 있습니다.
보통 람다식에서라면 아래와 같이 변수명이 하나 필요한데요.
s -> s.toUpperCase()
메소드 참조를 이용하면,
컴파일러가 컨텍스트를 통해,
필요한 매개변수의 수와 타입을 추론해 줍니다.
따라서 매개변수의 수에 상관없이 메소드 참조를 사용할 수 있게 되는 것 이지요.
2. 람다식과의 비교를 통한 이해
메소드 참조가 아닌,
람다식을 이용한 사례와 비교해 보며 이해해 보겠습니다.
RxJava에서 람다식을 사용하면 아래와 같습니다.
Observable
.just("김군", "박군", "이군")
.map(name -> name.toUpperCase())
.subscribe(name -> System.out.println(name));
이를 메소드 참조를 이용해, '클래스::메소드' 형식으로 바꾸면 아래와 같습니다.
아래와 같습니다.
Observable.just("김군", "박군", "이군")
.map(String::toUpperCase)
.subscribe(System.out::println);
메소드 참조는 문법자체가 복잡하지 않아 이해하기 쉽고요.
간결하면서도 이해하기 쉽게 해주므로 유지보수에도 도움이 됩니다.
RxJava 처럼 체이닝 해서 사용해야 해서,
스트림이 복잡하게 구성된 코드일수록,
더욱 그 가치가 빛나게 됩니다.
728x90