就像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());
}
}
}
答案 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)
没有。您的方法不再具有控制权,因为它在返回时退出。