मैं एक ओपन सोर्स प्रोजेक्ट है, जहां वे एक निर्गम धारा निर्माण कर रहे थे के माध्यम से जा रहा था, और निम्न विधि भर में आया था:जावा सरणी लंबाई 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 से कम की लंबाई बनाने के लिए भी संभव है? जैसे, यह प्रतिबिंब के साथ किया जा सकता है और यही वह है जिसके खिलाफ वे सुरक्षा कर रहे हैं?
आपका क्या मतलब है "हम जानते हैं कि यह 'शून्य' नहीं है? –
@EdwardThomson: मुझे लगता है क्योंकि पहला कथन 'बफर == नल' –
की जांच करता है शायद उस परियोजना में कहीं और यह एक सम्मेलन है कि '-1' यह कहने के तरीके के रूप में मान्य है कि एक सूचकांक अमान्य है या ऐसा कुछ है और यहां अंत में यह एक अपवाद में बदल गया है। – thalador