为什么在抽象类Writer中将writeBufferSize声明为final?

时间:2016-07-25 10:03:18

标签: java

public abstract class Writer implements Appendable, Closeable, Flushable {
    /**
     * Temporary buffer used to hold writes of strings and single characters
     */
    private char[] writeBuffer;
    /**
     * Size of writeBuffer, must be >= 1
     */
    private final int writeBufferSize = 1024;

我只想将writeBufferSize设置为更大的数字。为什么设计师宣称它是最终的?

2 个答案:

答案 0 :(得分:1)

没有必要回答"为什么":无论好坏,以及它是如何实施的。

请注意,在Java 8中,现在这是一个static final变量,更强烈地表明它是一个常量,并且不能由该类用户更改。

请改用BufferedWriter。这有一个构造函数,允许您指定缓冲区大小:

Writer writer = ...;
BufferedWriter bw = new BufferedWriter(writer, aBiggerNumber);

答案 1 :(得分:1)

只有原始API设计师可以告诉您。完全确定。

但另一方面是,如果它不是常数,那么就有可能将其设置为有害值,无论是偶然还是由于误解,或者(在不受信任的代码的情况下) )故意破坏事物。

但正如@AndyTurner所指出的那样,这是没有意义的......你可以轻松构建一个使用不同写缓冲区大小的Writer子类。