首页 > 解决方案 > 可附加容量限制

问题描述

我想要一个实现 Appendable 的类,写入内存中的字符串(即 StringBuilder 或 StringWriter),但对最大容量施加硬性限制。

我没有在 Java 标准库中找到类似的东西,也没有在任何“公共”库中找到类似的东西,例如 Guava 或 Apache Commons。

我特别需要 Appendable 接口实现,因为这是我使用的第 3 方库的要求。

标签: java

解决方案


将内部收集的字符串委托给 StringBuilder 字段。

public class A implements Appendable {
    private final StringBuilder sb;
    private final int max;

    public A(int max) {
        this.max = max;
        sb = new StringBuilder(max);
    }

    @Override
    public A append​(char c) {
        if (sb.length() < max) {
            sb.append(c);
        }
        return this;
    }

    @Override
    public A append​(CharSequence csq) {
        return append(csq, 0, csq.length());
    }

    @Override
    public A append​(CharSequence csq, int start, int end) {
        ...
    }

    @Override
    public String toString() {
        return sb.toString();
    }
}

也许您被 StringBuilder 作为最终类、不可扩展的阻碍。


推荐阅读