问题
Could someone be so kind to explain why on the following line I have UnsupportedOperationException?
System.out.println(ByteBuffer.wrap(new byte[] {'t', 'e', 's', 't', '\n'}).asCharBuffer().array());
回答1:
The asCharBuffer doesn't wrap a char[]
so you cannot obtain its array()
It appears what you are trying to do is.
System.out.println(Arrays.toString("test\n".toCharArray()));
回答2:
Did you read the Javadoc for CharBuffer.array()?
Not all CharBuffer
s are backed by a char[]
. ByteBuffer.asCharBuffer()
returns a view of the ByteBuffer
as a CharBuffer
, so its result is backed by a byte[]
.
array()
only returns the char[]
that actually backs the buffer, and if none exists, it throws a UOE. The closest alternative you'll be able to get is something like
char[] result = new char[charBuf.remaining()];
charBuf.get(result);
来源:https://stackoverflow.com/questions/11761700/unsupportedoperationexception-on-bytebuffer-aschararray-array