java为什么我们需要CharBuffer中的'hasArray()'方法?
CharBuffer有方法array()
和hasArray()
为什么我们需要hasArray()
在CharBuffer buf = CharBuffer.allocate(20)
之后,hasArray()
总是正确的,在-我们不能使用buf引用b/c它是未初始化的
你可以在下面搜索框中键入要查询的问题!
CharBuffer有方法array()
和hasArray()
为什么我们需要hasArray()
在CharBuffer buf = CharBuffer.allocate(20)
之后,hasArray()
总是正确的,在-我们不能使用buf引用b/c它是未初始化的
# 1 楼答案
是的,但是:
返回
false
即使没有,也不知道缓冲区是如何被检索的。您可以想象,操作系统分配了缓冲区,而Java只使用它,例如在打开文本文件时。你不能自己直接分配它是无关紧要的
除此之外} ,所以它需要仅仅因为这个原因
hasArray()
是一个function defined in the parent class ^{正如另一个答案所示,从文档中检索只读可访问的数组也会返回false:
这是有道理的,因为您不想传递只读缓冲区,只想让某人检索备份数组并以这种方式将数据写入数组来更改它;毕竟,Java数组总是可变的
# 2 楼答案
hasArray
的条件是isReadOnly
如果使用asReadOnlyBuffer
会发生变化例如
所以是的,我们需要它
接这条线
它是只读的还是非只读的?它是否持有有效的
char[]
数组?我们真的不知道。如果我们这样做了它是一个只读缓冲区,我们得到一个
ReadOnlyBufferException
如果它没有
char[]
数组的支持,我们得到一个UnsupportedOperationException
所以我们要做的是
现在我们{}安全了
此外,您可以确保Oracle/OpenJDK/whateverJDK工程师知道他们在做什么;)