Java Gold合格へ向けて
黒本の第7章は『汎用とコレクション』、これをさらに細分化すると下記の8つに分かれる(黒本より抜粋)。
- オートボクシングとラッパークラス
- ジェネリクスの利用
- 共変性と非変性
- 非境界ワイルドカード
- 上限境界ワイルドカードと下限境界ワイルドカード
- List, Queue, map, Setの特徴
- java.lang.Comparableインタフェース、comapreToメソッド
- java.util.Comparatorインタフェース、compareメソッド
とりあえず本記事では用語の意味と関係性を座学的にまとめていきたい。より詳しい使い方などについては、別記事でまとめていくような流れを取る。
- ラッパークラス…基本型を参照型のように扱うことができる
- オートボクシング…基本型とラッパークラス型のそれぞれの自動変換機能
- Boxing…基本型からラッパークラス型への変換
- Unboxing…ラッパークラス型から基本型への変換
そもそも基本型とか参照型とは何かについては下記の記事にまとめた。黒本の解説欄にはプリミティブ型という文言が使われているが、基本型と同じ意味である。
ラッパークラスは基本型に対応したものがそれぞれあるため、基本型と同じ8種類だけラッパークラスはある。基本型の名称の先頭が大文字にするだけ(float型→Float型)だが、char型とint型のラッパークラスだけはそれぞれCharacter型とInteger型というように名称が変わっていることに注意だ。
そんな参照型の取り扱いについて、参照型の変数に別の参照型の変数を代入を可能とするかしないかの性質のことを変性という。変性の種類としては下記の3つがある。
- 共変性…サブクラス型の代入を許す
- 非変性…サブクラス型の代入を許さない
- 反変性…さらにスーパークラス型の代入を許す
変性についてはまた別途で記事を書きたいと思う。
この第7章におけるメインテーマとも呼べるコレクションの概要は下記の通り。
- コレクション…変数に複数の値を保存するための機能
- リスト…コレクションの1つ。要素の順序を番号で管理する
- セット…コレクションの1つ。同じ要素が複数登録されないように管理する
- マップ…コレクションの1つ。要素をキーと呼ばれる情報で管理する
このコレクションを理解するにはジェネリクスの理解も必要となる……まぁ、使うだけなら知らなくても良いのだが、オブジェクトを扱うオブジェクトに対して、その都度使用したいオブジェクトを指定できるようにする機能のことをジェネリクスという。これについてもまた別途記事を作成するつもりだ。
まとめ
この第7章の主テーマはあくまでコレクションであり、それ以外のジェネリクスや変性、ラッパークラスといったものはコレクションを使うために知っておくべき情報といった構成になっている。例えばコレクションは複数のオブジェクトを操作し管理するためのものだが、基本型の変数は扱えない。しかし複数の基本型のデータをコレクションで用意されているリストなどで扱いたいこともあるだろう。その際に活躍するのがラッパークラスだ。
つまりコレクションを様々に応用できるようになることが、この第7章における目的だと勝手に解釈して、この第7週の勉強は取り組みたい。