関数型インターフェースとは
抽象メソッドを1つ持っているインターフェースのこと。
Objectクラスからオーバーライドしたメソッドや、defaultメソッド、staticメソッドの実装が含まれていても
抽象メソッドが1つ定義されていれば、関数型インターフェースとして認識される。
関数型インターフェースとして定義出来ているかどうかを確認するには「@FunctionalInterface」を用いる。
別名SAMインターフェース(Single Abstract Methodの略)とも呼ばれる。
関数型インターフェースとして定義できている例1)
抽象メソッドが1つのみのパターン。
Java
@FunctionalInterface
public interface IF {
public void Ex1(String str);
}
関数型インターフェースとして定義できている例2)
抽象メソッド、ObjectクラスのからオーバーライドしたtoString()メソッド、defaultメソッドの組合せ。
Java
@FunctionalInterface
public interface IF {
public void Ex1(String str);
public String toString();
default void Ex2() {}
}
関数型インターフェースとして定義できていない例1)
抽象メソッドが1つもないパターン。
Java
@FunctionalInterface
public interface IF { //ここでコンパイルエラー。
public String toString();
default void Ex2() {}
}
関数型インターフェースとして定義できていない例2)
抽象メソッドを2つ以上定義したパターン。
Java
@FunctionalInterface
public interface IF { //ここでコンパイルエラー。
public void Ex1(String str);
public void Ex2(String str);
}
関数型インターフェースの実装
Java
@FunctionalInterface
interface IF {
void add(int x,int y);
}
//普通に実装するとこうなる。
@Override
public void add(int x,int y){
System.out.println(x + y);
}
//ラムダ式で書くとこうなる。
IF IF1 = (x,y) -> System.out.println(x + y);
IF1.add(5,3);
以上で記事の解説はお終い!
もっとJavaやSpringを勉強したい方にはUdemyがオススメ!同僚に差をつけよう!