有人可以这么好心地解释为什么在下一行我有 UnsupportedOperationException 吗?
System.out.println(ByteBuffer.wrap(new byte[] {'t', 'e', 's', 't', '\n'}).asCharBuffer().array());
asCharBuffer 不包装 achar[]
所以你无法获得它array()
看来您正在尝试做的是。
System.out.println(Arrays.toString("test\n".toCharArray()));
您阅读 Javadoc 了CharBuffer.array()
吗?
并非所有CharBuffer
s 都由 a 支持char[]
。 ByteBuffer.asCharBuffer()
返回 a 的视图,因此其结果由 a 支持。ByteBuffer
CharBuffer
byte[]
array()
只返回char[]
实际支持缓冲区的,如果不存在,则抛出 UOE。你能得到的最接近的选择是
char[] result = new char[charBuf.remaining()];
charBuf.get(result);