Summary
-------------
Add `writeBytes` method to `ByteArrayOutputStream`.
Problem
-------------
The variant of `ByteArrayOutputStream.write` which accepts a single byte array parameter is inherited from `OutputStream` where it is declared to throw an `IOException` but when invoked on a `ByteArrayOutputStream` it cannot throw an `IOException`. Thus use of this method requires a useless `try-catch` block:
try {
baos.write(b);
} catch (IOException e) {
assert false : "cannot get here";
}
Solution
-------------
Add a new method `ByteArrayOutputStream.writeBytes` which does not throw an `IOException`. Overriding `OutputStream.write` not to throw an `IOException` is not a good option as it could cause an unwelcome source incompatibility especially for those that are compiling to multiple releases without specifying `--release` (or `-source/-target`).
Specification
-------------
Please refer to the attachment `specdiff-baos-writeBytes-8180410.zip`.
__Principal Change__
Add `ByteArrayOutputStream.writeBytes`:
/**
* Writes the complete contents of the specified byte array
* to this {@code ByteArrayOutputStream}.
*
* @apiNote
* This method is equivalent to {@link #write(byte[],int,int)
* write(b, 0, b.length)}.
*
* @param b the data.
* @throws NullPointerException if {@code b} is {@code null}.
* @since 11
*/
public void writeBytes(byte b[]) {}
__Incidental changes__
1. Document that `write(b,i,i)` throws `NullPointerException` and `IndexOutOfBoundsException`.
2. Document that `writeTo` throws `NullPointerException`.
3. Globally replace verbiage "byte array output stream" with `ByteArrayOutputStream`.