+1,
(There has been some variation in opinion about use of requireNonNull
even where the VM would check a reference for null; but it does seem
redundant on the face of it, even if hotspot would optimize it)
On 1/4/18 1:14 PM, Brian Burkhalter wrote:
https://bugs.openjdk.java.net/browse/JDK-8194649
Please see the proposed change included below. In the OIS case the
requireNonNull() call is not needed as a NPE would be thrown at the next line
anyway if arrayType were null.
Thanks,
Brian
--- a/src/java.base/share/classes/java/io/ByteArrayOutputStream.java
+++ b/src/java.base/share/classes/java/io/ByteArrayOutputStream.java
@@ -27,6 +27,7 @@
import java.nio.charset.Charset;
import java.util.Arrays;
+import java.util.Objects;
/**
* This class implements an output stream in which the data is
@@ -147,10 +148,7 @@
* @param len the number of bytes to write.
*/
public synchronized void write(byte b[], int off, int len) {
- if ((off < 0) || (off > b.length) || (len < 0) ||
- ((off + len) - b.length > 0)) {
- throw new IndexOutOfBoundsException();
- }
+ Objects.checkFromIndexSize(off, len, b.length);
ensureCapacity(count + len);
System.arraycopy(b, off, buf, count, len);
count += len;
--- a/src/java.base/share/classes/java/io/ObjectInputStream.java
+++ b/src/java.base/share/classes/java/io/ObjectInputStream.java
@@ -1296,7 +1296,6 @@
* @throws InvalidClassException if the filter rejects creation
*/
private void checkArray(Class<?> arrayType, int arrayLength) throws
InvalidClassException {
- Objects.requireNonNull(arrayType);
if (! arrayType.isArray()) {
throw new IllegalArgumentException("not an array type");
}