0

就像标题说的那样,我想知道您是否可以说制作一个 Getter 并在退出该方法之前以相同的方法清除它。

例子:

public StringBuffer Answer = new StringBuffer();

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

编辑

示例 2:使用 Try 和 Finaly 块:

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;
        }
}

请注意,我更改Answeranswer. 在大多数编程语言中,变量以小写字符开头是一种常见约定。

还可以考虑使用 a StringBuilder,它不是同步的,这使得它比 StringBuffer 快一点。

于 2012-07-11T20:30:18.980 回答
-1

不,您的方法不再具有控制权,因为它在返回时退出。

于 2012-07-11T20:30:58.213 回答