堅牢性を獲得する章
2.1. ユーティリティクラス
『目的』
ユーティリティクラスでの無駄をなくしましょう。
『Before』
ユーティリティクラスとは、static メソッドと static 変数だけが含まれているクラスを指します。
たとえば java.lang.Math クラスなどがそうですね。
ユーティリティクラスはインスタンス化されるように設計されているわけではありません。
そのインスタンスは意味がありません。
よく見かけるユーティリティクラスにこのようなものがあります。
public final class UtilHoge { /* メソッド。 */ public static final void foo() { : } }
このクラスはコンストラクタを明示的に記載していないです。
その場合、public な引数なしのコンストラクタが存在するのと同等ですね。
なので、インスタンス化できてしまいます。
/* インスタンス化できてしまう。 */ UtilHoge util = new UtilHoge();
意味無いことができるような状態は好ましくありませんね。
『After』
無駄なインスタンスは作らせないようにすべきです。
1つの明示的な private コンストラクタを含ませれば防止できます。
コンストラクタが private であれば、決して外部からアクセスできません。
よって、クラス自身から呼び出さない限りインスタンス化されないことが保証されます。
たとえば java.lang.Math はコンストラクタが private になっていますね。
public final strictfp class Math { /** * Don't let anyone instantiate this class. */ private Math() {} : }
コンストラクタは呼び出せません。
/* インスタンス化できない。 */ // Math mathUtil = new Math();
『まとめ』
ユーティリティクラスは、インスタンス化されないよう明示的にprivateコンストラクタを記載しましょう。
< 前のページへ 次のページへ >-
IS 559680 / ISO27001
認証範囲 本社、芝大門オフィス情報セキュリティ基本方針 -
個人情報保護方針
個人情報の取扱いについて
保有個人データ又は
第三者提供記録に関する
事項の周知について
特定個人情報の取扱いについて -
FS 671851 / ISO9001
認証範囲 本社、芝大門オフィス品質方針