메서드 참조(method references)라는 것은, 단순한 메서드 호출로만 구성된 람다식을 대체하는 개념이었습니다.
(left, right) -> Math.max(left, right);
// 메서드 참조
Math :: max;
이 개념을 생성자 호출에 적용해 보도록 하겠습니다. 생성자를 호출한다는 것은, 인스턴스를 생성해 낸다는 의미입니다. 그런데 이 생성자 호출에 있어서도 단순히 인스턴스 생성 후 리턴만 완료한다면, 이 역시 메서드 참조의 일종인 생성자 참조로 대체할 수 있습니다. 아래와 같은 케이스가 있다고 가정해 보겠습니다.
(a, b) -> { return new 클래스(a,b); }
생성자 참조도 메서드 참조와 비슷한 형태로 사용할 수 있습니다. 클래스의 이름을 작성하고 :: 기호를 붙인 다음, new 키워드를 작성해주는 방식입니다.
클래스 :: new
예시를 통해서 살펴보도록 하겠습니다.
우선 생성자 오버로딩이 되어있는 클래스 Member를 선언합니다.
public class Member {
private String name;
private String id;
// 생성자
public Member() {
System.out.println("Member() 기본 생성자 실행");
}
public Member(String id) {
System.out.println("Member(String id) 생성자 실행");
this.id = id;
}
public Member(String name, String id) {
System.out.println("Member(String name, String id) 생성자 실행");
this.name = name;
this.id = id;
}
public String getId() {
return id;
}
}
import java.util.function.BiFunction;
import java.util.function.Function;
public class ExampleMain {
public static void main(String[] args) {
Function<String, Member> function1 = Member :: new;
Member member1 = function1.apply("angel");
BiFunction<String, String, Member> function2 = Member :: new;
Member member2 = function2.apply("천사", "angel");
}
}
/*출력
Member(String id) 생성자 실행
Member(String name, String id) 생성자 실행
*/
'Programming > JAVA' 카테고리의 다른 글
컬렉션 프레임워크(2) - List 컬렉션 1 : List의 개념 (0) | 2023.10.11 |
---|---|
컬렉션 프레임워크(1) - 컬렉션 프레임워크 개념 (0) | 2023.09.22 |
람다식(5) - 메서드 참조 3 : 파라미터의 메서드 참조 (0) | 2023.09.13 |
람다식(5) - 메서드 참조 2 : 정적 메서드, 인스턴스 메서드 참조 (0) | 2023.08.31 |
람다식(5) - 메서드 참조 1 : 메서드 참조의 개념 (1) | 2023.08.31 |