##はじめに
皆さんはUnaryOperatorについてご存知でしょうか。UnaryOperatorを使用すれば、一律の処理をキュッとまとめることが出来ます。例えば、リストの文字列を全て大文字にするなど使い方次第で色々なことが出来ます。JavaGoldの試験の出題範囲でもあります。そんな、UnaryOperatorについて解説していきます。
##UnaryOperatorとは
UnaryOperatorとは、1つの値を処理して同じ型の処理を戻す処理を表す関数型インターフェースです。例えば、String型の引数を受け取ったら、戻り値もString型の処理を戻すというイメージです。UnaryOperatorは、Funcitionインターフェースのサブクラスで、抽象メソッドであるapplyメソッドを実装しています。それでは、サンプルコードを通して、使い方を解説していきます。
##どのように使うの?
以下のコードは、String型の引数を受け取ってその引数に変数strを加える処理です。
そしてapplyメソッドを使用して、UnaryOperatorで実装した処理を呼び出します。
public class Sample {
public static void main(String[] args) {
String str = "さん、こんにちは";
UnaryOperator <String> s = x -> x.concat(str);
System.out.println(s.apply("佐藤"));
}
}
##BinaryOperatorとは
UnaryOperatorでは1つの引数を受け取っていたのに対して、BinaryOperatorは2つの引数を受け取って、引数と同じ型の処理を戻します。
##どのように使うの?
OperatorFactoryクラスで、addメソッドとminusメソッドを作成しています。
このように、処理をまとめておくと再利用性が高くなります。
import java.util.function.BinaryOperator;
public class OperatorFactory {
public static BinaryOperator<Integer> add(){
return (a,b) -> a+b;
}
public static BinaryOperator<Integer> minus(){
return (a,b) -> a-b;
}
}
OperatorFactoryで作成したaddメソッドを変数opに代入して、applyメソッドで呼び出しています。
import java.util.function.BinaryOperator;
public class Sample {
public static void main(String[] args) {
BinaryOperator<Integer> op = OperatorFactory.add();
System.out.println(op.apply(10,20));
}
}
##まとめ
UnaryOperatorとは、1つの値を処理して同じ型の処理を戻す関数型インターフェース
BinaryOperatorは2つの引数を受け取って、引数と同じ型の処理を戻す関数型インターフェース