2017-09-04 10 views
-2

次のグローバル変数のString型があります。文字列型のグローバル変数

static public String rev="hello" 

私は別のクラスのオブジェクトから問題なく読むことができます。とにかく別のクラスのオブジェクトから別の文字列でそれを更新できますか?私はJava文字列が不変であることを知っています。別のクラスから

static public StringBuilder rev=new StringBuilder("hello"); 
    static public void setRev(StringBuilder s) 
    { 
    rev=rev.delete(0,rev.length()); 
    rev.append(s); 
    } 

:私は、StringBuilderのを使用して、以下の方法で試してみました

MainActivity.setRev(stringBuilderVar); 

しかし、それは動作しませんでした。

+1

Javaの文字列値は不変です。 StringBuildersはそうではありません。 –

+0

文字列は不変ですが、文字列_variable_を別の文字列に再割り当てすることができます。しかし以前は 'rev'を使用していました(' someOtherVar = MainActivity.rev')、 'rev'を再割り当てすることで以前に参照をコピーした場所は変更されません。さらに情報がなければ、物事を行う正しい方法が何であるかを知ることは難しいです。しかし、私は 'StringBuilder'が間違った解決策であると確信しています。 – ajb

+0

StringBuilderを静的として宣言すると、不変性の原因になる可能性がありますか?私が静的であると宣言する理由は、別のクラスからのアクセスです。 –

答えて

1

フィールドを更新する構文は、静的フィールドと非静的フィールドで同じです。つまり、プログラムが大きくなると、代わりに静的でないフィールドを使用することになります。

+0

以下は動作しません:Global.greeting = anotherStringVar; –

関連する問題