2012-03-13 7 views
0

私は異なるクラスのパッケージを持っています。 1つのクラスは構造データを実装します。私はこのクラスのインスタンスを私のパッケージのすべてのクラスでグローバル変数として使いたいと思っています。どのようにしてこの変数を使用して修正し、その内容を残すことができますか?パッケージ内のどのクラスでもアクセスできるJavaのグローバル変数

静的変数の作成は、私が必要とするものではありません。変更する必要があるだけでなく、読み込むだけです。

+1

静的変数を変更することができます(ただし、このように使用するのは良い考えではありません)。 –

+2

静的変数を変更することができます。しかし、真剣にあなたのデザインを変えることを考える必要があります。世界の国家は、まれに正当化される。 –

+0

[Javaのグローバル変数]の重複可能性(http://stackoverflow.com/questions/4646577/global-variables-in-java) –

答えて

1

このようなものはありますか?

class MyMetadata 
{ 
    private int x; 
    private int y; 
    public int getX() { return this.x; } 
    public int getY() { return this.y; } 
    public void setX(int newX) { this.x = x; } 
    public void setY(int newY) { this.y = y; } 
    MyMetadata(int x, int y) { this.x = x; this.y = y; } 

    static final private MyMetadata INSTANCE = new MyMetadata(0,0); 
    static public MyMetadata getInstance() { return INSTANCE; } 
} 

// in client code: 
int needsX = MyMetadata.getInstance().getX(); 

並行処理の問題を注意深く処理してください。

1

あなたはいつもあなたがシングルトンインスタンスにすべてのデータをラップし、そのインスタンスに

0
を共有する場合、それはいいだろう、(あなたが変更することはできませんれ、最終的な)

を静的変数の内容を変更することができます

static変数を再割り当てできないということは何もありません。この場合の「静的」とは、がインスタンスに関連付けられていないことを意味します。

一方、final修飾子は、変数の再割り当てを防止します。

私は、[書き込み可能な]静的変数の使用を避けることを強く勧めます。一般的に私はこれを何らかの状態インスタンスとしてカプセル化することができます:シングルトン(ick!)かそうでなければ。

ハッピーコーディング。

0

staticから 'final'キーワードを削除してから修正することができます。

static int globalInt = -42; 

どこでも使用および/または更新できます。

0

アプリケーション間でインスタンスを共有する唯一の方法は、シングルトンメカニズムによるものです。しかし、最近は反パターンになっているので、維持管理が難しく、またそのようなアプリケーションをテストする必要があります。その理由については、Web上でのそのパターンがどういうものなのか、多くの説明があります。

静的変数を変更することができるように、最終は変更できません。

関連する問題