我經歷了他們所創建的輸出流的一個開源項目,並遇到下列方法來:Java數組長度小於0?
@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[]
。我們知道它不是空的。它甚至有可能使它的長度小於0嗎?喜歡,可以用反射完成,這就是他們所防範的?
你是什麼意思「我們知道它不是'null'」? – 2012-07-17 20:02:05
@EdwardThomson:我認爲是因爲第一條語句檢查'buffer == null' – 2012-07-17 20:02:51
也許在該項目的其他地方,它是一個約定,'-1'是一種有效的方式來表示索引是無效的或類似的這裏終於變成了一個例外。 – thalador 2012-07-17 20:03:28