0

タイトルが言うように、私はあなたがゲッターを作って、同じ方法でメソッドを終了する前にそれをクリアすることができるかどうか疑問に思っていました。

例:

public StringBuffer Answer = new StringBuffer();

public synchronized String getAnswer() {
        synchronized(Answer) {
            return Answer.toString();
            // Clear Anwser here?
        }
}

編集

例2:TryおよびFinallyブロックを使用する場合:

public synchronized String getAnswer() {
        synchronized(Answer) {
            try{
                return Answer.toString();
            }finally{
                Answer.delete(0, Answer.length());
            }
        }
    }
4

2 に答える 2

3

はい、もちろん、返したい文字列を保持する一時変数を作成するだけです。

public StringBuffer answer = new StringBuffer();

public synchronized String getAnswer() {
        synchronized(answer) {
            String returnValue = answer.toString();
            answer.setLength(0); // clear the buffer.
            return returnValue;
        }
}

に変更Answerしたことに注意してくださいanswer。ほとんどのプログラミング言語では、変数が小文字で始まるのが一般的な規則です。

また、を使用するStringBuilderことを検討してください。同期されていないため、StringBufferよりも少し高速になります。

于 2012-07-11T20:30:18.980 に答える
-1

いいえ。メソッドは戻り時に終了するため、メソッドは制御できなくなります。

于 2012-07-11T20:30:58.213 に答える