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

标签 java synchronized stringbuffer

就像标题所说,我想知道你是否可以说创建一个 Getter,并在退出方法之前以相同的方法清除它。

示例:

public StringBuffer Answer = new StringBuffer();

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

编辑

示例 2:使用 Try 和 Finaly block :

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

最佳答案

当然可以,只需创建一个临时变量来保存您想要返回的字符串。

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 快一点。

关于java - 是否可以使用相同的方法返回一个字符串然后清除它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11440957/

相关文章:

java - 如何在 StringBuffer 中使用 replaceAll() 方法?

java - 在 Cygwin 中设置 Apache Tomcat

java - 关闭 Hook 在 Eclipse 中不起作用

java - 在for循环中创建多个arraylist对象并将其添加到TreeMap

java - 应该在列表本身还是在锁定对象上进行同步?

java - StringBuffer和append方法

java - Gradle + Java,多项目 build.gradle

java - 同步方法 - 这是如何工作的?

java - main 方法中的同步块(synchronized block)

java - 返回 StringBuilder 或 StringBuffer 的 StringUtils.replaceEach?