final class MyClass { private static final MyClass instance = new MyClass(); private MyClass(){}; public static MyClass getInstance(){ return instance; } public void hogehoge(){ System.out.println("hogehogeメソッド"); } } class Test{ public static void main(String aa[]){ MyClass m = MyClass.getInstance(); m.hogehoge(); } } javaの場合定数の初期化は一度しか行われないのが保障されているので必ず一度しかインスタンス化はおこなわれないです。 しかしコンストラクターが呼び出せてしまう