Java 8 새로운 기능 참조 상세 정보

Java 8 새 특성 메소드 참조
인용에 대해 말하자면 우리는 일반적으로 대상에 사용되는데 대상 인용의 특징은 서로 다른 인용 대상은 같은 내용을 조작할 수 있다는 것이다!
Java 8 메소드 참조는 다음과 같은 네 가지 형식을 정의합니다.
  • 정적 방법 참조ClassName:::staticMethodName
  • 참조 객체 메서드:Object:::methodName
  • 특정 유형을 참조하는 방법:ClassName:::methodName
  • 참조 구조 방법:ClassName:::new
  • 정적 방법 참조 예
    
    /**
     *    
     * @param <P>  
     * @param <R>  
     */
    @FunctionalInterface
    interface FunStaticRef<P,R>{
    
      public R tranTest(P p);
    
    }
    
    
    
    public static void main(String[] args) {
    
        /*
        *   : public static String valueOf
        *    String valueOf()   FunStaticRef#tranTest  
        */
        FunStaticRef<Integer, String> funStaticRef = String::valueOf;
        String str = funStaticRef.tranTest(10000);
        System.out.println(str.replaceAll("0", "9"));
    }
    
    
    객체 메소드 참조 예
    
    /**
     *   
     * @param <R>  
     */
    @FunctionalInterface
    interface InstanRef<R>{
    
      public R upperCase();
    }
    
    public static void main(String[] args) {
      
       /*
       *  : public String toUpperCase()
       *
       */
       String str2 = "i see you";
       InstanRef<String> instanRef = str2 :: toUpperCase;
       System.out.println(instanRef.upperCase());
    
    }
    
    
    특정 유형 방법 참조 예
    특정 방법의 인용은 이해하기 어렵다. 그 자체가 인용하는 것은 일반적인 방법이지만, 인용하는 방식은 다음과 같다. ClassName::methodName
    
     
    /**
     *  
     * @param <P>
     */
    @FunctionalInterface
    interface SpecificMethodRef<P>{
      public int compare(P p1 , P p2);
    }
    
    public static void main(String[] args) {
    
       /*
        *   public int compareTo(String anotherString)
        *   , , !
        */
       SpecificMethodRef<String> specificMethodRef = String :: compareTo;
       System.out.println(specificMethodRef.compare("A","B"));
    
       ConstructorRef<Book> constructorRef = Book :: new;
       Book book = constructorRef.createObject("Java",100.25);
       System.out.println(book);
    }
    
    
    구조 방법 참조 예
    
    class Book{
      private String title;
      private double price;
    
      public Book() {
    
      }
    
      public Book(String title,double price){
        this.price = price;
        this.title = title;
      }
    
      @Override
      public String toString() {
        return "Book{" +"title='" + title + '\'' +", price=" + price +'}';
      }
    }
    
    
    
    public static void main(String[] args) {
    
      /*
       *  
       */
      ConstructorRef<Book> constructorRef = Book :: new;
      Book book = constructorRef.createObject("Java",100.25);
      System.out.println(book);
    }
    
    
    전반적으로 말하자면 Java8의 새로운 특성은 현재 프로젝트에서 아직 대량으로 사용되지 않았지만, 배워 보면 이런 Java8의 새로운 특성의 코드를 보고 잘못을 모를 정도는 아니다!
    읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

    좋은 웹페이지 즐겨찾기