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); } }
見てくれてありがとう!