Function Interface

今回は、関数型のインタフェースについてメモしていきたいと思います。

関数型インタフェースとは(Function Interface)

  • ただ1つの抽象メソッドもつInterfaceのこと
  • APIの関数型InterfaceとしてはComparator、Runnableなどがある。
public interface Predicate<T> {
 boolean test(T t);
}
public interface Comparator<T> {
 int compare(T o1, T o2);
}
public interface Runnable {
 void run;
}
public interface Callable<V> {
 V call() throws Exception;
}

などなど。。。

InterfaceはDefault Methodを持つことができますが、多数のdefault メソッドがあったとしても抽象メソッドが1つであれば関数型Interfaceと言います。

Default Methodとは

Interfaceのメソッドをオーバーライドしていないクラスを考慮してボーディを含ませるメソッドのこと

使い方

Runnable r1 = () -> System.out.println("Hello World1"); // ①

Runnable r2 = new Runnable() {
 public void run () {
  System.out.println("Hello World2");
 }
} // ②

public static void process(Runnable r) {
 r.run();
} // ④

process(r1);
process(r2);
process(() -> System.out.println("Hello World3")); // ③
  • ①はラムダを使って定義しています。
  • ②は無名クラスを使って定義しています。
  • ③はラムダ表現式をパラメータとしてそのまま渡しています。
  • ④は関数型Interfaceを引数として持っているメソッドです。

上記の例でもわかるように、ラムダ表現式の方が簡潔で見やすいですね。

コメントを残す