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());
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()));
char[] you can use array() to get the original array you built the buffer from.Did you read the Javadoc for CharBuffer.array()?
Not all CharBuffers 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);