3

有人可以这么好心地解释为什么在下一行我有 UnsupportedOperationException 吗?

System.out.println(ByteBuffer.wrap(new byte[] {'t', 'e', 's', 't', '\n'}).asCharBuffer().array());

4

2 回答 2

3

asCharBuffer 不包装 achar[]所以你无法获得它array()

看来您正在尝试做的是。

System.out.println(Arrays.toString("test\n".toCharArray()));
于 2012-08-01T14:45:45.970 回答
3

您阅读 Javadoc 了CharBuffer.array()吗?

并非所有CharBuffers 都由 a 支持char[]ByteBuffer.asCharBuffer()返回 a 的视图因此其结果由 a 支持。ByteBufferCharBufferbyte[]

array()只返回char[]实际支持缓冲区的,如果不存在,则抛出 UOE。你能得到的最接近的选择是

char[] result = new char[charBuf.remaining()];
charBuf.get(result);
于 2012-08-01T14:49:44.197 回答