메서드 이름을 직접 참조하여 람다 표현식을 간결하게 표현하는 방법.
- 클래스명::메서드명 or 객체명::메서드명 형태로 작성된다.
클래스명::정적메서드명
import java.util.Arrays;
public class MethodReferenceExample {
public static void main(String[] args) {
String[] numbers = {"1", "2", "3"};
int[] parsedNumbers = Arrays.stream(numbers)
.mapToInt(Integer::parseInt)
.toArray();
System.out.println(Arrays.toString(parsedNumbers));
}
}
- mapToInt // Array 형태를 Int 형태로 바꾼다.
- Integer::parseInt // e -> Integer.parseInt(e) 를 의미한다.
클래스명::인스턴스메서드명
import java.util.Arrays;
public class MethodReferenceExample {
public static void main(String[] args) {
String[] messages = {"Hello", "World", "!"};
Arrays.stream(messages).forEach(System.out::println);
}
}
- System.out::println // e-> System.out.println(e) 를 의미한다.
생성자 참조
import java.util.stream.Stream;
public class MethodReferenceExample {
public static void main(String[] args) {
Stream.of("Alice", "Bob", "Charlie")
.map(Person::new)
.forEach(System.out::println);
}
}
class Person {
private String name;
public Person(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{name='" + name + "'}";
}
}
- Person::new // name -> new Person(name) 을 의미한다.