Javaの基本-ラムダ式

ラムダ式の概要

また、閉鎖として知られているラムダ式は、ある最も重要な新機能促進のリリースのJava 8を
Lambdaを使用すると、関数をメソッドパラメーターとして使用できます(関数はパラメーターとしてメソッドに渡されます)
Lambda式を使用すると、コードをより簡潔でコンパクトにすることができます。
ラムダ式は関数型プログラミングとも呼ばれます
たとえば、y = kx + 1; f(x)= kx + 1;これは数学の関数です。xが与えられると、yの値を取得できます。
ラムダ式はインターフェイス指向およびインターフェイス指向プログラミングです。関数型プログラミングでは、インターフェース指向の原則に従って、関数型インターフェース定義する必要があります

ラムダ式の構文

匿名内部クラスを使用してインターフェースを実装する

(parameters) -> expression
或
(parameters) ->{
    
     statements; }

ラムダ式の場合

interface Fooi{
    
    
	public void sayHello();
}
public class LambdaTest {
    
    
	public static void main(String[] args) {
    
    
		//接口不能new,使用匿名内部类
		Fooi foo = new Fooi(){
    
    
			@Override
			public void sayHello() {
    
    
				// TODO Auto-generated method stub		
				System.out.println("hello 2004");
			}	
		};
		foo.sayHello();
	}
}

ここに画像の説明を挿入
ここのプログラムはもともと1行だけですが、たくさん書かれています。プログラム開発の効率を低下させます。
どうすれば最適化できますか?
ラムダ式は、匿名の内部クラスコードの冗長性の現象を解決するためのものです。
このインターフェイスにはメソッドが1つしかないことがわかります。このインターフェイスを実装する場合、実装されるメソッドは1つだけです。つまり、指定しなくても、どのメソッドであるかを知ることができます。
ラムダ式:括弧をコピーし、右矢印を書き留め、中括弧を上陸させる

interface Fooi{
    
    
	public void sayHello();
}
public class LambdaTest {
    
    
	public static void main(String[] args) {
    
    
		Fooi foo=() -> {
    
    System.out.println("hello 1205");};
		foo.sayHello();
	}
}

ここに画像の説明を挿入
背後にあるコードはわずか2行です。開発効率が大幅に向上しました。
現在複数の方法がある場合でも、それらを使用できますか?

interface Fooi{
    
    
	public void sayHello();
	public int add(int x,int y);
}
public class LambdaTest {
    
    
	public static void main(String[] args) {
    
    
		Fooi foo=()->{
    
    System.out.println("hello 1205");};
		foo.sayHello();
	}
}

このとき、プログラムはエラーを報告します。

ここに画像の説明を挿入
ラムダ式を使用するために関数型インターフェースに実装できるメソッドは1つだけであることがわかります。
戻り値を持つパラメーターがある場合、それらを使用できますか?

interface Fooi{
    
    
	public int add(int x,int y);
}
public class LambdaTest {
    
    
	public static void main(String[] args) {
    
    
		Fooi foo=(int x,int y)->{
    
    
			return x+y;
		};
		System.out.println(foo.add(3,5));
	}
}

ここに画像の説明を挿入
メソッドにはパラメーターがあり、戻り値もラムダ式を使用できることがわかります

インターフェイスが機能的なインターフェイスであることを確認するにはどうすればよいですか?
@FunctionalInterfaceアノテーション

使用して、インターフェイスに2つのメソッドを追加すると、エラーが報告されます。写真が示すように:

@FunctionalInterface;
interface Fooi{
    
    
	public int add(int x,int y);
	public void sale();
}

ここに画像の説明を挿入
この時点でエラーが報告されます。
インターフェイスに実装されていないメソッドが1つしかないが、このアノテーションが追加されていない場合、Javaは暗黙的にこのアノテーションをインターフェイスに追加します。インターフェイスに
2つのメソッドがあり、FunctionalInterfaceアノテーションが定義されている場合、例外が報告されます。

ラムダ式の概要

ラムダ式の式:括弧をコピーし、右矢印を書き留めて
、@ FunctionalInterfaceアノテーションを使用します

おすすめ

転載: blog.csdn.net/qq_39736597/article/details/111999982