ByteBuffer.asCharArray()上的UnsupportedOperationException.array()

时间:2012-08-01 14:42:34

标签: java nio java-6

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

  

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

2 个答案:

答案 0 :(得分:3)

asCharBuffer不会包裹char[],因此您无法获取array()

看来你要做的就是。

System.out.println(Arrays.toString("test\n".toCharArray()));

答案 1 :(得分:2)

您是否阅读了CharBuffer.array()的Javadoc?

并非所有CharBuffer都由char[]支持。 ByteBuffer.asCharBuffer()会将ByteBuffer视图作为CharBuffer返回,因此其结果由byte[]支持。

array()仅返回实际支持缓冲区的char[],如果不存在,则抛出UOE。您能够获得的最接近的替代方案是

char[] result = new char[charBuf.remaining()];
charBuf.get(result);