Hi Max,

Both methods that throw and not throw have been proposed. But adding two methods seems like to too much clutter in the API and the methods appear too similar.

The (at most) readNBytes method provides the needed functionality of allocating/reallocating
the array and performing well.

For the cases where reading less than N is significant, the caller should be checking the
return length to validate it got the input it expected.

$.02, Roger

On 1/22/2018 5:42 AM, Weijun Wang wrote:
On Jan 22, 2018, at 5:01 PM, Weijun Wang <weijun.w...@oracle.com> wrote:

I wonder when readNBytes(n) will be useful if the return value has less than n 
bytes.
I mean I have seen protocols saying reading rest of the content, or reading N 
bytes, but never reading at most N bytes. I would rather the method throwing an 
EOFException if there are less than N bytes. This is also what 
DataInput::readFully is doing.

--Max

On Jan 22, 2018, at 4:52 PM, Alan Bateman <alan.bate...@oracle.com> wrote:



On 17/01/2018 16:24, Brian Burkhalter wrote:
:

A negative value of ‘len’ will now cause an IllegalArgumentException instead of 
an IndexOutOfBoundsException. Also some verbiage has been improved.

http://cr.openjdk.java.net/~bpb/8139206/webrev.01/

The updated version looks good. I just wonde about the "For example ..." in the 
@throws OOME description. The API can't be called with a len > Integer.MAX_VALUE so this 
example could be confusing - I think just drop that sentence.

Minor formatting in passing. At L128 and L339 it would be easier to read if the 
"throws IOException" were on the previous line. Also L355 might be a bit clear 
if the Math.min was indented (have to look twice to see that it's not in the while body).

-Alan

Reply via email to