我在查看一个开源项目时,他们正在创建一个输出流,并遇到了以下方法:
@Override public void write(byte[] buffer, int offset, int length) {
if (buffer == null) {
throw new NullPointerException("buffer is null");
}
if (buffer.length < 0) { // NOTE HERE
throw new IllegalArgumentException("buffer length < 0");
}
if (offset < 0) {
throw new IndexOutOfBoundsException(String.format("offset %d < 0", offset));
}
if (length < 0) {
throw new IndexOutOfBoundsException(String.format("length %d < 0", length));
}
if (offset > buffer.length || length > buffer.length - offset) {
throw new IndexOutOfBoundsException(String.format("offset %d + length %d > buffer" " length %d", offset, length, buffer.length));
}
}
byte[] buffer
只是一个普通的老旧的byte[]
数组。我们知道它不是null。它是否可能具有小于0的长度?比如,通过反射可以实现吗,这就是他们需要防范的吗?
buffer == null
。” - Greg Hewgillarray.length < 0
。 - Marko Topolnikchar
是否小于0。 - Marko Topolnik