ラムダ式の概要
また、閉鎖として知られているラムダ式は、ある最も重要な新機能促進のリリースの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アノテーションを使用します