ユーティリティクラスのコンストラクタをprivateにする十分な理由が分からない
privateコンストラクタにする理由がメモリ使用率だけなら、わざわざ不可視化しなくても良いのではないか?
以下のようなコードをよく見かける。
public class HogeUtils {
/** インスタンス化を防ぐ */
private HogeUtils() { };private String foo() {
....
}
何でprivateコンストラクタにしてまでインスタンス化を防ぐのか日本のGoogle先生に聞くと
次のような主旨のような回答が返ってくる。
今の実行環境*1でこれを気にする必要があるのだろうか?
privateコンストラクタを見て思うこと
1.はSpringなどのフレームワークを使っていれば通常Singletonになる。
2.はカバレッジ100%とかを求められるケースでツールによっては発生する。Reflectionを使えば出来るけど、アホらしい。
3.やっちゃうメンバーは教育すれば良いし、やれてもループ外だったら致命傷にはならない(コンパイラ最適化で回避もできる)
*1:組み込みは除く。クミコマーには頭が上がらないです。