【问题标题】:Java StringBuilder drop new lines between calls to append?Java StringBuilder 在追加调用之间删除新行?
【发布时间】:2012-11-24 18:00:09
【问题描述】:

是否可以配置 Java StringBuilder 类以在每次调用 append 之间追加一个新行?

【问题讨论】:

    标签: java append stringbuilder


    【解决方案1】:

    我认为StringBuilder 没有内置该功能。既然你不能只是扩展它,你可以尝试使用装饰器模式......

    class NewlineStringBuilder {
    
        private StringBuilder delegate;
    
        public NewlineStringBuilder() {
            delegate = new StringBuilder();
        }
    
        public NewlineStringBuilder appendLine(String str) {
            delegate.append(str).append("\n");
            return this;
        }
    
        public String toString() {
            return delegate.toString();
        }
    }
    

    另外,Java 也可以支持这种简写,这很有用,因为装饰器不需要重新实现所有需要从装饰类中获得的方法,但是由于原始资源完全未公开,因此更加危险必须权衡取舍:

    StringBuilder message = new StringBuilder();
    class AppendingStringBuilder {
        private final StringBuilder builder;
        AppendingStringBuilder(StringBuilder builder) {
            this.builder = builder;
        }
        public AppendingStringBuilder append(String str) {
            builder.append(str + "\n");
            return this;
        }
    }
    AppendingStringBuilder messageHelper;
    // ...
    

    【讨论】:

    • 自动 - 不想每次调用 append 时都这样做。
    • 我猜这背后有一些技术原因,但你能解释一下你的问题是什么吗?
    • 你不能/不想只打电话给append("\n")的原因
    • 这是重复的代码。我认为在软件开发社区中很明显为什么要避免这种情况。
    • 是的,我想到了这个。如果没有更多开箱即用的东西(烦人的类被声明为 final),我可能会使用它。
    猜你喜欢
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多