JAva 8-メソッドリファレンス

1928 ワード

方法の研究


ランダが既存のメソッドまたはジェネレータを呼び出す場合、メソッド抽出を使用して辛辣な簡潔な表現を行うことができます.

メソッド参照:


Static Methodリファレンスタイプ:::Static Method特定オブジェクトのインスタンスメソッドリファレンスオブジェクトリファレンス文献::インスタンスメソッド任意オブジェクトのインスタンスメソッドリファレンスタイプ::インスタンスメソッド作成者リファレンスタイプ::new
  • メソッドまたはジェネレータのパラメータで、ramdaの入力値を受け入れます.
  • 戻り値または生成されたオブジェクトはramdaの戻り値です.
  • 
            // 생성자 참조 
            Supplier<Greeting> newGreeting = Greeting::new;
            // 위의 식을 썼다고 Gretting 객체가 생기는 것이 아니다.
            Greeting greeting2 = newGreeting.get();
            // 위와 같이 get() 함수를 사용해야 Greeting 객체를 만들 수 있다.
    
    
            // 생성자 참조
            Function<String, Greeting> hyunsikGreeting = Greeting::new;
            Greeting hyunsik = hyunsikGreeting.apply("hyunsik");
    
            // 스태틱 메소드 참조
            UnaryOperator<String> hi = Greeting::hi;
            String hiHyunsik = hi.apply("hyunsik");
    
            // 특정 객체의 인스턴스 메소드 참조
            Greeting greeting = new Greeting();
            UnaryOperator<String> hello = greeting::hello;
            String hi2Hyunsik = hello.apply("hyunsik");
    
            // 임의 객체(불특성 다수)의 인스턴스 메소드 참조
            String[] names = {"hyunsik", "aaa", "bbb"};
            Arrays.sort(names, String::compareToIgnoreCase);
            System.out.println(Arrays.toString(names));