JavaのIntUnaryOperatorインターフェースとは?主要メソッドと使用例を解説
Javaで関数型プログラミングを行う際に活用できるのが、java.util.functionパッケージに含まれる「IntUnaryOperator」インターフェースです。IntUnaryOperatorは、int型の引数を1つ受け取り、int型の結果を返す操作を表す関数型インターフェースで、Java 8から導入されました。ここでは、IntUnaryOperatorの基本的な使い方をサンプルコードとともに見ていきましょう。
IntUnaryOperatorの使用例
import java.util.function.IntUnaryOperator;
public class Demo{
public static void main(String args[]){
IntUnaryOperator op_1 = IntUnaryOperator.identity();
System.out.println("identity関数の結果:");
System.out.println(op_1.applyAsInt(56));
IntUnaryOperator op_2 = a -> 3 * a;
System.out.println("applyAsInt関数の結果:");
System.out.println(op_2.applyAsInt(56));
IntUnaryOperator op_3 = a -> 3 * a;
System.out.println("andThen関数の結果:");
op_3 = op_3.andThen(a -> 5 * a);
System.out.println(op_3.applyAsInt(56));
IntUnaryOperator op_4 = a -> a / 6;
System.out.println("compose関数の結果:");
op_4 = op_4.compose(a -> a * 9);
System.out.println(op_4.applyAsInt(56));
}
}
実行結果
identity関数の結果: 56 applyAsInt関数の結果: 168 andThen関数の結果: 840 compose関数の結果: 84
コードの解説
このプログラムでは、「Demo」クラスのmainメソッド内で、IntUnaryOperatorの各機能を確認しています。まず「identity」メソッドは、入力された値をそのまま返す恒等関数を生成するため、56がそのまま出力されます。次に「applyAsInt」メソッドは、ラムダ式で定義した処理を実際に適用するもので、ここでは「引数を3倍にする」処理により56 × 3 = 168が出力されています。
さらに「andThen」メソッドは、現在の関数を先に実行し、その結果に対して引数に渡した関数を後から適用する関数合成を行います。この例では「3倍にする」処理の後に「5倍にする」処理が実行されるため、56 × 3 × 5 = 840という結果になります。一方、「compose」メソッドはandThenとは逆の順序で合成を行い、引数に渡した関数を先に実行してから、元の関数を適用します。この例では「9倍にする」処理が先に行われ、その後「6で割る」処理が実行されるため、56 × 9 ÷ 6 = 84となります。
IntUnaryOperatorの主なメソッド一覧
- applyAsInt(int operand):引数に指定したint値に関数を適用し、結果をint型で返します。
- identity():常に入力値をそのまま返す恒等関数を返します。
- andThen(IntUnaryOperator after):現在の関数を先に実行し、その結果にafterを適用する合成関数を返します。
- compose(IntUnaryOperator before):beforeを先に実行し、その結果に現在の関数を適用する合成関数を返します。
このようにIntUnaryOperatorを利用することで、int型に対する変換処理を簡潔に記述でき、ラムダ式やメソッド参照と組み合わせることで、より読みやすく保守性の高いコードを実現できます。
-
Java 9のインターフェースでプライベートメソッド・プライベート静的メソッドは定義できるのか?
はい、Java 9以降では、インターフェース内にプライベートメソッドやプライベート静的(static)メソッドを定義することができます。 この機能は、defaultメソッドやstaticメソッド間で共通する処理をまとめ、コードの重複(冗長性)を排除するために導入されました。プライベートメソッドはそのインターフェースの内部からのみアクセス可能であり、他のインターフェースやクラスからアクセスしたり継承したりすることはできません。つまり、実装の詳細を外部に公開せずに隠蔽できるのが大きな特徴です。 構文 interface <interface-name> { private s
-
Javaのインターフェースとは?基本構文からクラスとの違いまで徹底解説
Javaのインターフェースとはインターフェースは、Javaにおける参照型の一つで、クラスとよく似た性質を持っています。その本体は抽象メソッドの集まりであり、クラスがインターフェースを実装することで、その抽象メソッドを引き継ぐ仕組みになっています。抽象メソッドに加えて、インターフェースには定数、デフォルトメソッド、静的メソッド、ネストされた型を含めることも可能です。ただし、メソッドの本体(処理内容)が存在するのは、デフォルトメソッドと静的メソッドのみです。インターフェースの記述方法はクラスと似ていますが、両者の役割は異なります。クラスがオブジェクトの属性や振る舞いを記述するのに対し、インターフェ