반응형
메서드 참조 ?
하나의 메서드만 호출하는 람다식은 '메서드 참조' 로 더 간단히 할 수 있다.
static 메서드 참조
//1.문자열 s 를 파라미터로 받아서 Int로 변환하여 반환하는 메서드
Integer method(String s){
return Integer.parseInt(s);
}
//2.위 메서드의 람다식 표현
Function<String,Integer> func = (s)->Integer.parseInt(s);
//3.위 람다식을 메서드 참조 표기
//입력값 출력값에 대한 정보가 Function의 제네릭에 들어 있기 때문에
//2번의 (s)를 지우고 아래처럼 사용할 수 있다 .
//메서드만 참조해주면 알아서 타입을 잡아준다.
Function<String,Integer> func = Integer::parseInt
메서드 참조가 이해가 안간다면 메서드 참조를 람다식으로 바꿔보는 연습을 해보면 좋다 .
생성자의 메서드 참조
생성자에서 메서드 참조를 사용할 수 있다.
// 파라미터가 없는 생성자를 람다식으로
Supplier<MyClass> c = ()->new MyClass();
// 파라미터가 없는 생성자를 메서드 참조로 표현
Supplier<MyClass> c2 = MyClass::new;
// 파라미터가 있는 생성자를 메서드 참조로 표현
Function<Integer,MyClass> c4 = MyClass::new;
//객체를 반환해 준다.
MyClass myClass = c.get();
//int q=4 라는 멤버를 갖은 MyClass객체를 리턴한다
MyClass myClass2 = c4.apply(4);
int q = myClass2.getQ();
//4
System.out.println(q);
배열의 메서드 참조
//배열의 메서드 참조
Function<Integer,int[]> f = int[]::new;
int[] apply2 = f.apply(5);
System.out.println(apply2.length);
반응형
'JAVA' 카테고리의 다른 글
JAVA 스터디 24 - 스트림(Stream) (0) | 2021.03.27 |
---|---|
JAVA 스터디 22 - 컬렉션 프레임웍과 함수형 인터페이스 (0) | 2021.03.27 |
JAVA 스터디 21 - Predicate의 결합 (0) | 2021.03.27 |
JAVA 스터디 20 - 람다식 (Lamda Expression) (0) | 2021.03.27 |
JAVA 스터디 18 - 애노테이션 (0) | 2021.03.26 |