IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Effective Java 読書会 1 日目「static メソッドの使い方などなど」

はじめに

社内で「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 はさすがにダメですかね><

オブジェクトの生成を省ける場合がある

インスタンス制御クラスは、たぶん enum でやるよねーってことでスルー。
でも Collections.emplyList() 的な使いかたはありっすね。

戻り値の型のサブタイプも返せる

これは 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 にしてる自分は負け組み><
後々の章で詳しく出てくるらしい。

enum ってコンストラクタ持てるの?

持てる。余裕。そして便利
インスタンス制御クラスもシングルトンも enum

Singleton なクラスにするか、Utility クラスにするか

コンストラクタが必要なら Singleton 確定。
あと、状態を持つ場合は Singleton だよね、クラスに状態を持つのは変だよねという話になった。

まとめ

明日も頑張るぞー。おー。