ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java8. 메소드 레퍼런스 (Method Reference)
    BackEnd/Java 2022. 1. 20. 23:27
    반응형

      메소드 레퍼런스(Method Reference)란 ::를 사용하여 축약하는 방법입니다.

     

    메소드 참조 방법

    • Static Method 참조
    • 특정 객체 Instance Method 참조
    • 생성자 참조
    • 임의 객체 Instance Method 참조

      메소드 또는 생성자의 매개변수로 람다의 입력 값을 받으며, 리턴 값 또는 생성한 객체는 람다의 리턴 값입니다.

    public class Hello {
      private String name;
    
      public Hello() {}
    
      public Hello(String name) { this.name = name; }
    
      public String print(String name) { return "Hello, " + name; }
    
      public String printName() { return "Hello, " + this.name; }
    
      public static String printJava() { return "Hello, Java!!"; }
    }
    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.function.Function;
    import java.util.function.Supplier;
    
    public class MethodReference {
    
      public static void main(String[] args) {
        // Static Method 참조
        Supplier<String> supplier = Hello::printJava; // () -> Hello.printJava();
        System.out.println(supplier.get()); // [결과]: Hello, Java!!
    
        // 특정 객체의 Instance Method 참조
        Hello hello = new Hello();
        Function<String, String> function = hello::print; // s -> hello.print(s);
        System.out.println(function.apply("Java!")); // [결과]: Hello, Java!
    
        // 생성자 참조
        Function<String, Hello> newHello = Hello::new; // s -> new Hello(s);
        System.out.println(newHello.apply("Java").printName()); // [결과]: Hello, Java
    
        // 임의 객체의 Instance Method 참조
        String[] names = {"aJava","cJava","bJava"};
        Arrays.sort(names, String::compareToIgnoreCase);
        System.out.println(Arrays.toString(names)); // [결과]: [aJava, bJava, cJava]
      }
    
    }
    반응형

    댓글

Designed by Tistory.