2014-09-01から1ヶ月間の記事一覧

Effective Java 第 2 版:第 5 章 項目 24, 25

項目 24: 無検査警告を取り除く 型パラメータを書いていないなどの理由で、コンパイル時に無検査警告が出ることがある。 無検査警告は全て取り除くべきである。 なぜなら、全ての警告を取り除けば、そのコードは型安全であると保証できるからである。 もし、…

Effective Java 第 2 版:第 5 章 項目 23

ここから 5 章の「ジェネリックス」に入る。 ジェネリックスを適切に使えば、型安全なコードを書くことができる。 項目 23: 新たなコードで原型を使用しない Java 1.5 より前に、コレクション宣言で用いられていた原型 (raw type) は、型安全の観点から、も…

Effective Java 第 2 版:第 4 章 項目 22

項目 22: 非 static のメンバークラスより static のメンバークラスを選ぶ 4 種のネストしたクラスの説明が述べられている。 ネストしたクラス (nested class) とは、あるクラスの中で定義されているクラスのことである。 ネストしたクラスは以下の 4 種類か…

Effective Java 第 2 版:第 4 章 項目 20, 21

項目 20: タグ付クラスよりクラス階層を選ぶ 後の章で出てくる enum をタグとして持たせたタグ付クラスはよくないという話。 わざわざこの悪い方法をとる人はあまりいなさそうな気もする。 以下のようなクラスを考える。 class Figure { enum Shape { RECTAN…

launchd で Homebrew を自動アップデート

追記:Yosemite 以降では以下の記事を参照してください。 launchd で Homebrew を自動アップデート(Yosemite 編) - kymmt's note Homebrew を使っていて、たまに brew doctor すると、以下のメッセージが表示される。 Warning: Your Homebrew is outdated.…

Effective Java 第 2 版:第 4 章 項目 18, 19

項目 18: 抽象クラスよりインタフェースを選ぶ インタフェースの利点 主に以下の利点がある。 簡単に実装できる ミックスインを実現しやすい 階層になっていないフレームワークを組織できる ラッパークラスイディオムを利用できる 骨格実装を提供できる 骨格…

Effective Java 第 2 版:第 4 章 項目 16, 17

項目 16: 継承よりコンポジションを選ぶ 継承を避けておきたい理由 あるサブクラスはスーパークラスの実装に依存してしまうため。 スーパークラスの実装が変わったら、サブクラスの実装も追随して書き換えなければならない。 解決法:コンポジション コンポ…