Categories: Java

【Java入門】関数型インターフェースとは

関数型インターフェースとは

抽象メソッドを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がオススメ!同僚に差をつけよう!

shiakisudev