インスタンス取得はコンストラクタか、staticメソッドか
String hoge = new String("hoge");
とかするんだろう*1。というか、そうするためにnewなんてのが用意されてるんだけど。他方、staticメソッドで同じような感じにできる。
String hoge = String.valueOf("hoge");
ともできる。さて、僕らユーザはどちらを使えば良いんだろうというお話を、ちょっと前に俳句に書いた。その時は「単純ならコンストラクタ使えばいーんじゃね」という結論に落ち着いた。
以上。前置きが長い。
いやしかし、staticメソッドを使う重要な利点が一つあって、メソッド名を変えるだけで、同じパラメータでも違う方法でインスタンスを生成できるってこと。世の中、setterで必須パラメータを与えたりする派と、インスタンス生成時に必須パラメータを全て与える派がいるらしく、自分は後者に近いんだけど、その場合に有効、というか必須となりうる。もしかして、リファクタリングもやりやすいかも知れない。
プログラムって期待通り動作させるのは第一歩、その先にどう記述するかという広い世界が広がってるんだなぁ、と改めて。
実際問題として、そこまでガチガチに理想通りに書くかどうかって問題もある。経験上、ガチガチにするアイデアがあるならそう書いた方が、後で楽になることが多いけどね。