「また素敵な話題が増えましたね。」
「サプライズが次々とやってくる! 私の誕生日なの?」
「今日は、ジェネリックについて説明します。ジェネリックとは、パラメータを持つ型です。Java では、コンテナ クラスによって、その内部オブジェクトの型を示すことができます。」
「ジェネリック変数を宣言するときは、1 つではなく 2 つのタイプ、つまり変数のタイプとそれに格納されるデータのタイプを指定します。」
「ArrayList はその良い例です。新しい ArrayList オブジェクトを作成するとき、このリスト内に格納される値の型を指定すると便利です。」
コード | 説明 |
---|---|
|
という ArrayList 変数を作成しますlist 。ArrayList オブジェクトをそれに割り当てます。 このリストにはStringオブジェクトのみを保存できます。 |
|
という ArrayList 変数を作成しますlist 。ArrayList オブジェクトをそれに割り当てます。このリストには任意の値を保存できます。 |
|
という ArrayList 変数を作成しますlist 。ArrayList オブジェクトをそれに割り当てます。 このリストには Integer と のint 値のみを保存できます。 |
「非常に興味深いですね。特に、任意の型の値の保存に関する部分です。」
「それは良いことのようにしか思えません。実際には、あるメソッドで ArrayList に文字列を入れ、別のメソッドでそれに数値が含まれることを期待すると、プログラムはクラッシュします (エラーで終了します)。」
"そうか。"
「今のところ、型パラメータを使用した独自のクラスは作成しません。既存のものを使用するだけです。」
「私が作成したクラスであっても、どのクラスでも型パラメータにできますか?」
「はい。プリミティブ型を除く任意の型です。すべての型パラメータは Object クラスから継承する必要があります。」
「つまり、 ArrayList<int> を書くことができないということですか?」
「確かに、それはできません。しかし、Java 開発者は、プリミティブ型ごとにラッパー クラスを作成しました。これらのクラスはObjectを継承します。次のようになります。」
プリミティブ型 | クラス | リスト |
---|---|---|
整数 | 整数 | ArrayList<整数> |
ダブル | ダブル | ArrayList <Double> _ |
ブール値 | ブール値 | ArrayList< Boolean > |
文字 | キャラクター | ArrayList<文字> |
バイト | バイト | ArrayList<バイト> |
「プリミティブ クラスとその類似物 (ラッパー クラス) を相互に簡単に割り当てることができます。」
例 |
---|
|
|
|
|
|
「素晴らしいですね。ArrayList をもっと頻繁に使ってみようと思います。」
GO TO FULL VERSION