1

シングルトンパターンを使用してこの問題を解決できます。しかし問題は、new MyClass() を呼び出す他のアプリケーションを制御できないことです。
MyClass の暗黙のコンストラクターでできる方法はありますか?
このようなもの。

class ClassName {
    public ClassName() {
        if( object exist for ClassName)
            return that
        else
            create New ClassName object
    }
}

前もって感謝します。

4

5 に答える 5

1

列挙型を使用できます:

public enum ClassName {
    INSTANCE;

}

これで、インスタンスが 1 つになり、他のインスタンスがクラスをインスタンス化することを心配する必要がなくなりました。


MyClass の暗黙のコンストラクターでできる方法はありますか?

いいえ、それはコンストラクターでは実行できません。

于 2012-11-06T06:53:00.380 に答える
0

構築を制御する場合は、明示的なコンストラクターを配置し、プライベートとして宣言します。クラス内の静的ファクトリメソッドから呼び出すことができます。

于 2012-11-06T06:47:07.657 に答える
0

次のようなものが必要です。

class ClassName {

private static ClassName INSTANCE;

private ClassName() {
    //create ClassName object
}

public static ClassName getInstance(){
if (INSTANCE == null){
    INSTANCE = new ClassName();
} 

return INSTANCE;
}

}

これは、シングルトン パターンの基本的な実装にすぎません。

オブジェクトを構築するクラスが を使用して構築するnew必要がある場合、あなたはちょっとうんざりしています。パブリック コンストラクターのみを使用して Java でシングルトン パターンを実装する方法は実際にはありません。

編集:次のようなことができるかもしれません:

class ClassNameWrapper extends ClassName {

private final ClassName className;

public ClassNameWrapper(){
    className = ClassName.getInstance();
}

//overload methods from ClassName

}

このように、すべての呼び出しnew ClassNameWrapper()で ClassName の同じインスタンスが使用されます。

于 2012-11-06T06:52:53.540 に答える
0

これはおそらくあなたが望むものです:

public class MySingletonClass {
    private static MySingletonClass instance = null;
    private MySingletonClass() { }
    public static MySingletonClass getInstance() {
       if (instance == null) {
           instance = new MySingletonClass();
       }
       return instance;
    }
    // add your methods here.
}

この方法では、誰も呼び出すことができませんnew MySingletonClass();。オブジェクトの唯一のインスタンスを取得するには、次のように記述する必要があります。

MySingletonClass msc = MySingletonClass.getInstance();

voidまたは、メソッドに対して次のように使用します。

MySingletonClass.getInstance().yourMethod();

または、戻り値の型を持つメソッドの場合は次のようになります。

VariableType foo = MySingletonClass.getInstance().yourMethod(); // Must return VariableType
于 2012-11-06T06:50:20.693 に答える
0

クラスに静的変数を作成し、object instanceそこに保持します。getter以下のメソッドを使用してクラス オブジェクトを公開します。

  class ClassName {

     private static ClassName myClass= null;

     public ClassName getClassName() {
       if(myClass == null){
         ClassName.myClass = new ClassName();
       }
       return ClassName.myClass;
     }
}
于 2012-11-06T06:50:39.680 に答える