메소드 레퍼런스

Ahri·2021년 12월 13일
1

JAVA

목록 보기
3/6

인프런의 더자바, JAVA8 강의를 들으며 정리한 내용입니다.

메소드 레퍼런스란?

람다 표현식이 단 하나의 메소드만을 호출하는 경우, 불필요한 매개변수를 제거하여 간결하게 표현하도록 해줌

메소드를 참조하는 방법

 스태틱 메소드 참조               |  타입::스태틱 메소드
 특정 객체의 인스턴스 메소드 참조    |  객체 레퍼런스::인스턴스 메소드
 임의 객체의 인스턴스 메소드 참조    |  타입::인스턴스 메소드 
 생성자 참조                    |  타입::new 

 

1. 스태틱 메소드 참조

public class A_MethodReference {
 //static method
 public static String hi(String name){
        return  "hi "+name;
    }
}

//static method reference
UnaryOperator<String> hi = A_MethodReference::hi; 
System.out.println(hi.apply("ahreum")); // hi ahreum

2. 특정 개체의 인스턴스 메소드 참조

public class A_MethodReference {
//instance method
public String hello(String name){
        return "hello "+name;
    }
}

//instance method reference
A_MethodReference a_methodReference = new A_MethodReference();
UnaryOperator<String> hello = a_methodReference::hello;
System.out.println(hello.apply("ahreum")); // hello ahreum

3. 임의의 객체에 인스턴스 메소드 참조하는 경우

String[] names = {"vvv","ahreum","hong"};
Arrays.sort(names, String::compareToIgnoreCase);
		   //Comparator 함수형 인터페이스
System.out.println(Arrays.toString(names)); // ahreum, hong, vvv

4. 생성자 참조

public class A_MethodReference {
    private String name;

   //입력값 없는 생성자 (case 1)
    public A_MethodReference(){
    }
   //입력값 받는 생성자 (case 2)
    public A_MethodReference(String name){
        this.name = name;
    }
}

//constructor reference
//입력값 없는 생성자 만들어짐 (case 1)
Supplier<A_MethodReference> a_methodReferenceSupplier= A_MethodReference::new;
a_methodReferenceSupplier.get(); // 이 때 만들어짐

//입력값 받는 생성자 만들어짐 (case 2)
Function<String, A_MethodReference> ahriGreeting = A_MethodReference::new;
A_MethodReference aMethodReference2 = ahriGreeting.apply("ahreum");
System.out.println(aMethodReference2.getName()); // ahreum

compareTo() 와 compareToIgnoreCase()

  • int compareTo(String str) : 인자값으로 비교대상 String 값을 받아서 int 로 반환함
    ex) "abc".compareTo("def")
  • int compareToIgnoreCase() : compareTo와 비슷하나 대소문자 무시

0개의 댓글