Groovy-generics
提供:Dev Guides
Groovy-ジェネリック
ジェネリックを使用すると、クラス、インターフェイス、およびメソッドを定義するときに、型(クラスおよびインターフェイス)をパラメーターにすることができます。 メソッド宣言で使用されるより馴染みのある正式なパラメーターと同様に、型パラメーターは、異なる入力で同じコードを再利用する方法を提供します。 違いは、仮パラメーターへの入力は値であるのに対して、型パラメーターへの入力は型であるということです。
コレクションのジェネリック
Listクラスなどのコレクションクラスは、そのタイプのコレクションのみがアプリケーションで受け入れられるように一般化できます。 一般化されたArrayListの例を以下に示します。 次のステートメントは、文字列型のリスト項目のみを受け入れるということです-
次のコード例では、次のことを行っています-
- 文字列のみを保持する一般化されたArrayListコレクションを作成します。
- リストに3つの文字列を追加します。
- リスト内の各アイテムについて、文字列の値を出力します。
上記のプログラムの出力は次のようになります-
一般化されたクラス
クラス全体を一般化することもできます。 これにより、クラスは任意のタイプを受け入れ、それらのタイプに応じて適切に機能するようになります。 これを達成する方法の例を見てみましょう。
次のプログラムでは、次の手順を実行しています-
- ListTypeというクラスを作成しています。 クラス定義の前に置かれた<T>キーワードに注意してください。 これは、このクラスが任意の型を受け入れることができることをコンパイラに伝えます。 したがって、このクラスのオブジェクトを宣言するとき、宣言中に型を指定できます。その型はプレースホルダー<T>で置き換えられます
- ジェネリッククラスには、クラスで定義されたメンバー変数を操作するための単純なgetterおよびsetterメソッドがあります。
- メインプログラムでは、ListTypeクラスのオブジェクトを宣言できますが、型は異なります。 最初のタイプは整数型で、2番目のタイプは文字列型です。
上記のプログラムの出力は次のようになります-