項目 22: 非 static のメンバークラスより static のメンバークラスを選ぶ
4 種のネストしたクラスの説明が述べられている。
ネストしたクラス (nested class) とは、あるクラスの中で定義されているクラスのことである。 ネストしたクラスは以下の 4 種類からなる。
- static メンバークラス
- 非 static メンバークラス
- 無名クラス
- ローカルクラス
……ばっちり内容が被っている記事を見つけたので、各クラスの説明は以下のリンクの紹介に代える。
先ほど紹介したクラスの種類とは以下のように対応する。
- static メンバークラス <--> static のネストしたクラス
- 非 static メンバークラス <--> メンバ・クラス
- 無名クラス <--> 無名内部クラス
- ローカルクラス <--> ローカル内部クラス
なぜ「非 static のメンバークラスより static のメンバークラスを選ぶ」なのかだけ書いておく。 このプラクティスは、メンバークラスを使うときに、そのクラスがエンクロージングクラスへアクセスする必要がないときに有効である。 なぜなら、非 static のメンバークラスは、エンクロージングクラスのインスタンスと一対一に関連づけられ、エンクロージングクラスへの参照を裏で持ち、これはリソースの浪費となる可能性がある。
参考文献
EFFECTIVE JAVA 第2版 (The Java Series)
- 作者: Joshua Bloch,柴田芳樹
- 出版社/メーカー: 丸善出版
- 発売日: 2014/03/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (12件) を見る