Staticなメンバ、メソッドへのアクセス時にコンストラクタは呼び出されない。
時々曖昧になる、オブジェクト指向の挙動をメモ。
- /**
- * サンプルクラス
- */
- public class Sample01
- {
- final static String CONST = "const";
- public Sample01()
- {
- System.out.println( "hoge" );
- }
- static public void printText()
- {
-   System.out.println( "moge" );
- }
- }
のようなクラスに対して
- System.out.println( Sample01.CONST );
- Sample01.printText();
のようにインスタンス生成せずに呼び出された場合に、コンストラクタは一度も呼び出されない。
メソッドがstaticだったり非staticだったりするようなクラス(この時点で設計ミスかも)は気をつけないと混乱する。
いっそ、staticメソッドしか持たないクラスはコンストラクタをprivateにしてインスタンス生成させない、くらいの縛りがあっても良いかもしれない。