Java-メソッド研究


この投稿は学習用の記事です.
間違った内容があるかもしれません.

📒 メソッドリファレンス

  • ランダが既存のメソッドまたはジェネレータを呼び出す場合、メソッドを使用して簡潔に表すことができます.
  • ,すなわち,1つのメソッドのみを呼び出すラムダ式は,メソッド抽出を用いてより簡単な操作を行うことができる.
  • 📌 1.静的メソッドを参照:クラス::メソッド

    (x) -> ClassName.method(x) //람다식
    ClassName::method //메서드 참조
  • の下のコードのような方法があると仮定します.
  • Integer method(String s){
        return Integer.parseInt(s);
    }
  • ラム式に変更すると、次のコードになります.
  • Function<String, Integer> f = (String s)->Integer.parseInt(s); //람다식
  • ブルーティーセレモニーから見るFunction<String, Integer>.
  • 入力String、出力Integerを含む情報.
  • したがって、
  • は、重複する情報を除去することができ、次のコードを完了する.
  • Function<String, Integer> f = Integer::parseInt; //메소드 참조
    メソッドリファレンスコードが理解できない場合は、逆にランムダ式に変えて理解しましょう.

    📌 2.ジェネレータを参照:タイプ::new


    パラメータがない場合
    Supplier<MyClass> s = () -> new MyClass(); //람다식
    Supplier<MyClass> s = MyClass::new //메서드 참조
    1つのパラメータがある場合(2つのパラメータがある場合はBiFunctionを使用します).
    Function<Integer, MyClass> s = i -> new MyClass(i); //람다식
    Function<Integer, MyClass> s = MyClass::new; //람다식
    配列とメソッドを参照
    Function<Integer, int []> s = i -> new int[i]; //람다식
    Function<Integer, int []> s = int[]::new; //람다식

    📌 3.特定のオブジェクトを参照するインスタンスメソッド:オブジェクトリファレンス::インスタンスメソッド


    ほとんど使わない
    (x) -> obj.method(x) //람다
    obj::method //메서드 참조

    📌 複合例

    public class Main {
        public static void main(String[] args) {
            //스태틱 메소드 참조
            Function<String, String> hi=Greeting::hi;
            hi.apply("user");
    
            //생성자 참조(인자 없는 생성자)
            Supplier<Greeting> newGreeting=Greeting::new;
            //생성자 참조(String 받는 생성자)
            Function<String, Greeting> greeting=Greeting::new;
            
            //인스턴스 메소드 참조
            Greeting obj=new Greeting();
            Function<String, String> hello=obj::hello;
    
        }
    }
    
    class Greeting{
        private String name;
        public Greeting(){}
    
        public Greeting(String name){
            this.name=name;
        }
    
        public String hello(String name){
            return "hello "+name;
        }
    
        public static String hi(String name){
            return "hi "+name;
        }
    }

    Reference


    これがジャワです。
    インフラストラクチャjava(白線)