UnsupportedOperationException异常上ByteBuffer.asCharA

2019-09-20 15:18发布

可能有人会这么好心来解释为什么以下行我有UnsupportedOperationException异常?

的System.out.println(。ByteBuffer.wrap(新字节[] { 'T', 'E', 'S', 'T', '\ n'})asCharBuffer()数组());

Answer 1:

该asCharBuffer不包裹一个char[]所以不能获得其array()

看样子你正在尝试做的是什么。

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


Answer 2:

你读的Javadoc CharBuffer.array()

并非所有CharBuffer S被一个支持char[] ByteBuffer.asCharBuffer()返回的视图 ByteBuffer作为CharBuffer ,所以其结果是由一支持byte[]

array()只返回char[]实际上备份的缓冲器,并且如果不存在,它将引发UOE。 你就可以得到的最接近的替代产品是一样的东西

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


文章来源: UnsupportedOperationException on ByteBuffer.asCharArray().array()
标签: java nio java-6