直接贴StackOverflow
https://stackoverflow.com/questions/55442531/why-do-we-ever-need-hasarray-method-in-charbuffer
正文:
The condition for hasArray is
(hb != null) && !isReadOnly
isReadOnly changes if you use asReadOnlyBuffer
CharBuffer.allocate(20).asReadOnlyBuffer();
for example.
So yes, we need it.
Take this line
final CharBuffer cb = instance.getCharBuffer(...);
Is it read-only or not? Does it hold a valid char[] array? We don’t really know. If we do
cb.array();
and it is a read-only Buffer, we get a ReadOnlyBufferException.
If it isn’t backed by a char[] array we get a UnsupportedOperationException.
So what we might do is
if (cb.hasArray()) {
final char[] arr = cb.array();
}
Now we are Exception-safe.
Also, you can be sure Oracle/OpenJDK/whateverJDK engineers know what they’re doing ;)