はじめに
社内で「Effective Java を 20 日で読もう」という勉強会が企画されて、今日がその一日目。
ノリノリな感じで。
どーん
今日読んだところ
5 ページ 〜 19 ページ
という訳で
いろいろ出た話題を残しておく
毎日続けるために、なるべく適当に書いていこうと思う
あと、自分が勝手に解釈してる部分も多々あると思うます><
static ファクトリーメソッド
static ファクトリーメソッドとは、コンストラクタの代わりに使われる static メソッドのことらしい。
コンストラクタは、名無し
たしかに String コンストラクタとかごちゃごちゃしてて一個一個名前付けたほうがいいんじゃね?と思うなーと
http://java.sun.com/javase/6/docs/api/java/lang/String.html#constructor_summary
String string = new String(stringBuffer);
より
String string = String.in(stringBuffer);
のほうが分かりやすい的な? in はさすがにダメですかね><
戻り値の型のサブタイプも返せる
これは static ファクトリーに関わらず便利なことが多い。
パラメタ化された型を推論してくれる
// new は String を推論してくれない(String を二回書かなければいけない) List<String> stringList = new LinkedList<String>();
// static ファクトリは戻り値の型から推論してくれる(Arrays.<String>asList() が呼ばれる)
List<String> stringList = Arrays.asList();
static ファクトリーメソッドを使う場合は、名前でそれと分かるようにしたほうがいいよ
newInstance とか getInstance とか of とか valueOf とか asList とかとか newList とか
Builder パターンかっこいい
Node anchorElement = new HTMLElement.Builder("a").href("http://www.google.com/").title("Google").build();
みたいな感じですかね!
かっちょいー。
Singleton はテストしにくい件について
そこら辺は、 DI 使うと楽だよねって話になった。 @Singleton って書くだけだし、楽チンらしい。
何 Exception 使っていいか分かりません><
とりあえず、いつも IllegalArguments にしてる自分は負け組み><
後々の章で詳しく出てくるらしい。
Singleton なクラスにするか、Utility クラスにするか
コンストラクタが必要なら Singleton 確定。
あと、状態を持つ場合は Singleton だよね、クラスに状態を持つのは変だよねという話になった。
まとめ
明日も頑張るぞー。おー。