LoginSignup
15
13

More than 5 years have passed since last update.

[java8] 2回目:ラムダ式と関数型インタフェース

Last updated at Posted at 2014-09-14

前回のサンプルコードを参考に、ラムダ式と関数型インタフェースの関係を見てみます。
前回:ラムダ式で降順ソートを書いてみよう

関数型インタフェース

Consumerインタフェース

前回の出力用のメソッドです。

    private static void printList(List<String> list) {
        list.forEach(program -> System.out.println(program));
    }

繰り返しに使われるforEachメソッドは、Consumerインタフェースを引数に取ります。
JavaDocを覗いてみると、、、

@FunctionalInterface
public interface Consumer<T> {

    /**
     * Performs this operation on the given argument.
     *
     * @param t the input argument
     */
    void accept(T t);
    ・・・
  • @FunctionalInterfaceが付与されており、これは関数型インタフェースを表す
  • 関数型インタフェースは、ただ1つの抽象メソッドを持つ

となっています。
つまり、関数型インタフェースに対して、ラムダ式を適用できそうですね!

他の関数型インタフェースの例

1.8で追加されたもの

1.8以前から存在する以下も、関数型インタフェースの一部

最後に

ラムダ式と関数型インタフェースの関係が分かりました。
ただ、記述は簡略化されるが、それほど旨味は感じないですね。

どうやら、Java8で追加されたStream APIと組みわせると・・!?
では、次回。

15
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
13