是否可以返回一个字符串然后用同一方法清除它?

时间:2012-07-11 20:28:57

标签: java synchronized stringbuffer

就像tittle说的那样,我想知道你是否可以让我们说出一个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());
            }
        }
    }

2 个答案:

答案 0 :(得分: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快一点。

答案 1 :(得分:-1)

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