为什么 Java 11 在 ByteArrayOutputStream 类中添加了 writeBytes?(byte[] b) 方法,而 write?(byte[] b) 方法却做了同样的事情?

MTB*_*MTB 3 java outputstream bytearrayoutputstream

Oracle从 Java 11 开始writeBytes\xe2\x80\x8b(byte[] b)向该类添加了方法。ByteArrayOutputStream该方法采用字节数组并将其写入ByteArrayOutputStream. 然而,ByteArrayOutputStream扩展OutputStream类定义了write\xe2\x80\x8b(byte[] b)做同样的事情。为什么 Java 需要一个新方法来做到这一点?

\n

Ste*_*n C 6

正如其他人所指出的,新方法的好处是它没有声明为throws IOException.

添加它是为了响应此问题JDK-8180410“ByteArrayOutputStream should not throw IOExceptions”。该问题中所述的基本原理很简单,必须为永远不会抛出的异常编写 a是没有意义的。try ... catch就是这样。

他们(严格来说)不需要添加它。他们添加它是为了方便。


1 - 正如记者所说:“这是矛盾的。”