메서드 레퍼런스(Methods Reference)
메서드 레퍼런스는 이름에서 알 수 있듯이 메서드의 레퍼런스를 전달한다는 의미이며, 람다표현식에서 메서드 호출 1회로 코드가 끝나는 경우 메서드 레퍼런스를 이용해 이미 줄인 코드를 더 줄일수도있다.
메서드의 레퍼런스라고하지만 엄밀히 말해 자바에서의 메서드는 일급 객체가 아니기때문에 객체의 레퍼런스를 전달하는 방식으로 작동한다.
##
- 스태틱 메서드 참조
-> 스태틱 메서드를 참조할때는 [타입 :: 스태틱 메서드]
public class staticMethods {
private String name;
public static String hi(String name){
return "hi" + name;
}
UnaryOperator<String> hi = Greeting::hi;
- 특정 객체의 인스턴스 메서드 참조
->인스턴스 메서드를 참조할때는 [객체 래퍼런스 :: 인스턴스 메서드]
public class instanceMethods {
private String name;
public String hello(String name){
return "hello" + name;
}
Greeting greeting = new Greeting();
UnaryOperator<String> hello= greeting::hello;
- 임의 객체의 인스턴스 메서드 참조
->임의 객체의 인스턴스 메서드를 참조할때는 [타입::인스턴스 메서드]
String [] arr = {"apple" , "banana", "strawberry"};
Arrays.sort(arr, String::compareToIgnoreCase);
- 생성자 참조
-> 생성자를 참조할때는 [타입 :: new]
public class ConstructorTest{
private String name;
public ConstructorTest(String name) {
this.name = name;
Function<String,Greeting> KH= ConstructorTest::new;
ConstructorTestKH = KH.apply("JKH");
}
'Java' 카테고리의 다른 글
Serializable 인터페이스에 대하여 (0) | 2020.11.14 |
---|---|
String 클래스에 대하여 (Null / immutable /String pool) (0) | 2020.11.11 |
[Java] 유용한 Math 메소드 (0) | 2020.07.05 |
Map의 유용한 인터페이스 (0) | 2020.06.19 |
CompareTo / Comparator 사용하기 (0) | 2020.03.13 |