> On 21 Apr 2016, at 16:43, Alan Bateman <[email protected]> wrote:
>
>
>
> On 21/04/2016 15:34, Paul Sandoz wrote:
>> Hi
>>
>> Please review:
>>
>>
>> http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8154556-vh-nio-byteorder/webrev/
>>
>> <http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8154556-vh-nio-byteorder/webrev/>
>>
>> This is a small tweak to the VarHandle API. The array and ByteBuffer related
>> factory methods on MethodhHandles now accept a java.no.ByteOrder rather than
>> a boolean value.
>>
>> Use of java.no.ByteOrder is considered more readable in code that a boolean
>> value, for express big, little or native endianness.
>>
> The switch the ByteOrder looks okay, just wondering if have to check for null
> and then adjust @throws NPE in the javadoc too.
>
I blindly copied the same behaviour from ByteBuffer.order:
/**
* Modifies this buffer's byte order.
*
* @param bo
* The new byte order,
* either {@link ByteOrder#BIG_ENDIAN BIG_ENDIAN}
* or {@link ByteOrder#LITTLE_ENDIAN LITTLE_ENDIAN}
*
* @return This buffer
*/
public final ByteBuffer order(ByteOrder bo) {
bigEndian = (bo == ByteOrder.BIG_ENDIAN);
nativeByteOrder =
(bigEndian == (Bits.byteOrder() == ByteOrder.BIG_ENDIAN));
return this;
}
Was that behaviour intentional or an oversight? I am assuming the latter as
it’s ambiguous what should happen if a third value, null, is passed.
I updated the webrev in place to throw an NPE.
> BTW: Is there a reason for "throws IllegalArgumentException"? This an
> unchecked so I assume not needed there (the @throws in the javadoc should be
> sufficient).
>
I retained consistency with existing MH factory methods.
Thanks
Paul.