3
2

More than 1 year has passed since last update.

初心者でもわかる関数型インターフェース(Function編)

Posted at

はじめに

関数型インターフェースのFunctionインタフェースをご存知でしょうか。Functionインターフェースを使用すると処理をキュッとまとめることができます。これによって読みやすいコードにするこどができます。そんなFuncitionインターフェースとおまけにBiFunctionインターフェースについて解説していきます。

Functionインターフェースとは

引数を1つ受け取ってその引数を使った処理返す関数型インターフェースです。例えば、引数の5を受け取ったとしましょう。その5に1を足す処理を返すというイメージです。Functionは抽象メソッドであるapplyメソッドを持っています。では、サンプルコードを通して具体的に説明していきます。

Functionはジェネリックスの型を2つ受け取ります。 具体的には1つ目の型はappyメソッドの引数の型、2つ目はapplyメソッドの戻り値の型として受け取ります。

どうやって使うの?

以下のサンプルコードは引数に半径を受け取り、その引数を利用して円の面積を求める処理をしています。Functionは型のパラメータを2つ受け取っています。1つ目は半径(引数)の型を受け取り。2つ目は戻り値の型を受け取っています。最後にapplyメソッドを使って、円の面積を求める処理を呼び出しいます。

Sample.java
import java.util.function.Function;

public class Sample {
    public static void main(String[] args) {
        Function <Integer, Double> circle= x -> x * x * 3.14;
        System.out.println(circle.apply(8));
    }
}

もっと複雑な処理をするには?

複数の引数を使って処理をすれば、もっと複雑な処理を実装できますよね?この時に使用するのがBiFunctionインターフェースです。2つの引数を受け取り、その引数を引数を使った処理を返す関数型インターフェースです。

どのように使うの?

Functionとは違い、Bifunctionは3つの型を受け取ります。1つ目は第一引数の型、2つ目は第二引数の型3つ目は戻り値の型です。下記のコードは第一引数に体重を受け取り、第2引数は身長(m)を受け取って、その引数を使ってbmiを求める処理を変数bmiに格納しています。最後にapplyメソッドを使って、その処理を呼び出しています。

Bmi.java
import java.util.function.BiFunction;

public class Bmi {
    public static void main(String[] args) {
        BiFunction <Integer,Double, Double> bmi= (x,y) -> x /Math.pow(y,2);
        System.out.println(bmi.apply(58,1.7));
    }
}

まとめ

Functionは引数を1つ受け取ってその引数を使った処理を返す
BiFunctionは引数を2つ受け取ってその引数を使った処理の返す

参考文献

3
2
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
3
2