Java の関数型プログラミング (基礎): パート 1

1. 関数型プログラミングには 3 つの部分があります。

最初の部分は次のとおりです: ラムダ式

2 番目の部分はメソッドリファレンスです。

3 番目の部分は、機能インターフェイスです。

ラムダ式に最近触れました。これはすごいと思います。従来のプログラミング手法を短いコードで置き換えることができます。

シンプルな栗を例に挙げます。

インターフェイスにメソッドを実装したいと考えています。最初の方法は、まずインターフェイスを実装するクラスを定義し、そのメソッドを書き換えてから、このクラスのオブジェクトをインスタンス化し、このメソッドを呼び出します。

 

 

2 番目の方法は、内部クラスの方法を使用することです。

 

今度は Lambda が輝くときです。

 

 まず静的メソッドを定義します。仮パラメータはインターフェイスです。次に、静的メソッドでインターフェイスのメソッドを呼び出します。

Lambda 式を使用する前提は、インターフェイスが存在する必要があり、そのインターフェイスにはメソッドが 1 つだけ存在するということです。

Lambda 内の実行文が 1 つだけの場合、{} と ; は省略できます

 

 

コードの内容:

パブリック インターフェイス Eatable {

    ボイド食べる();
}

パブリック クラス Eattest は Eatable{ を実装します

    @Override
    public void Eat() {         System.out.println("ローストチキンを食べるのが好きです");     }

        

パブリック クラス Test2 {

    public static void main(String[] args) {         // クラスとポリモーフィズムのインスタンス化により Eatable を実現         e=new Eattest();         Eatdemo(e); //         内部クラスにより         Eatdemo(new Eatable() を実現 ) {             @Override             public void Eat() {                 System.out.println("フライドチキンを食べるのが好きです");             }         });         // Lambdaでeatdemoを実装         (() ->{             System.out.println("フライドチキンを食べるのが好きなので、 much ");         });         //         eatdemo(()->System.out.println("フライドチキンが好き"));     と同等     private static void Eatdemo(Eatable e) {         e.eat();     } }



        


            





        







    



Lambda の後半: 記述の省略

1.1 次のようなパラメータ タイプは省略できます。

        flytest((String s) ->{             System.out.println(s);         });         // パラメータの型は省略可能         flytest((s) ->{             System.out.println(s);         });





1.2 パラメータの型を省略する場合は、すべてのパラメータの型を省略する必要があります

例えば:        

addtest((x,int y) ->{             return x+y;         });

 

この書き方は間違っているのでエラーが報告されます

両方とも省略する必要があります: addtest((x,y) ->{             return x+y;         });

2.1 パラメータが 1 つだけの場合は、() を省略できます。

    flytest(s->{             System.out.println(s);         });

2.2 コードブロック内にステートメントが 1 つしかない場合、{} と ; は省略できます。

flytest(s->System.out.println(s));

3. コードブロック内にステートメントが 1 つしかない場合は、{} とを省略でき、return がある場合は省略できます。

addtest((x,y) ->x+y);

コードデモ:

//追加インターフェース

パブリックインターフェース {を追加

    int add(int x,int y);
}

// 動作アクションインターフェイス

パブリック インターフェイス Flyable {

    void fly(String s);
}

mainメソッドで実装される

パブリック クラス ショー {

    public static void main(String[] args) {         flytest((String s) ->{             System.out.println(s);         });         // パラメータの型は省略可能         flytest((s) ->{             System.out . println(s);         });         //パラメータの型を省略したい場合は、すべてのパラメータの型を省略する必要があります// 間違っています// addtest((x,int y) ->{ // return x+y; // } );         //パラメータが 1 つだけの場合は省略できます ()         flytest(s->{             System.out.println(s);         });         //コード ブロックにステートメントが 1 つだけの場合は省略できますsubmit {} と ;         flytest (s->System.out.println(s));         //コードブロック内にステートメントが 1 つしかない場合は、{} と は省略可能、return がある場合は省略可能







        





        




        


        

        addtest((x,y) ->x+y);
        
    }
    
    private static void flytest(Flyable f) {         f.fly(「あんな鳥が空を飛んでる!」);     }     private static void addtest(Add a ) {         int sum=a.add(50, 100);         System.out.println(sum);     } }






見てくれてありがとう!

おすすめ

転載: blog.csdn.net/m0_62780474/article/details/124360928