1

処理中にシングルトン パターンを追加したい

public class Singleton {

    private static final Singleton instance = new Singleton();

    private Singleton() {
    }

    static Singleton getInstance(){
        return instance;
    }

}

エラー: フィールド インスタンスは静的に宣言できません。静的フィールドは、静的または最上位の型でのみ宣言できます

ありがとうハンス

4

5 に答える 5

1

これを試して

public class Singleton { private static final Singleton インスタンス;

private Singleton() {}

 public static Singleton getInstance() 
 {
    if(instance != null)
      return instance;
    else
         {
            instance = new Singleton();
         }
 }
}
于 2013-06-27T09:53:25.780 に答える
1

わかりませんが、追加するタブの数に関係なく、処理スケッチは単一の Java トップレベル クラスです。タブはコードを整理するためにあるだけですが、それでも 1 つのクラスに属しています。このクラスは、スケッチの名前が何であれ呼び出され、処理のコアで PApplet クラスを拡張します。スケッチで定義するクラスはすべて最上位クラス (内部クラス) の一部になります。コンパイラでは静的な内部クラスを設定できないため、これを実際に作成することはできません。

一般に、処理中にシングルトン パターンを追加する理由がわかりません。その背後にある理由は、パターンで定義されている単一のクラスとは別に、そのクラスからのオブジェクトの生成を許可しないことです。この動作は、主に API を設計する場合や、何がどこで生成されるかを追跡する必要があるような大きなプログラムがある場合に役立ちます。シングルトン パターンは、各トップレベル クラスが別のトップレベル クラスに対して実行できることをある意味で制限するため、そこで役立ちます。シングルトン パターンの背後にあるもう 1 つの理由は、グローバル フィールドとメソッド (すべてのプログラムで使用できる) を許可することです。処理スケッチは本質的に単一の Java クラスであるため、既にこの機能を備えており、プログラム内の任意の場所にメソッドまたはフィールドを設定するだけです。

これらは、処理中に行うことはありませんが、Eclipse などのように制限されない本格的な Java 環境ではおそらく行うことです。処理の背後にある考え方は、物事をできるだけ単純にすることであり、さまざまな方法で制限を加えることです。プログラムが大きくなり、複雑になった場合は、別の IDE に切り替えたほうがよいでしょう。

ただし、必要に応じて、このパターンを選択した理由を説明してください。そうすれば、誰かがそれを行うための最善の方法で答えることができます!

于 2013-07-13T13:13:34.953 に答える
0

シングルトンが内部クラスの場合、静的メンバーを含めることができるように静的に宣言する必要があります

public static class Singleton {
   ...
于 2013-06-27T09:57:52.703 に答える