gpt4 book ai didi

java - 为什么我们在 CharBuffer 中需要 `hasArray()` 方法?

转载 作者:行者123 更新时间:2023-12-02 01:34:24 26 4
gpt4 key购买 nike

CharBuffer 具有方法 array()hasArray()

为什么我们需要hasArray()

CharBuffer buf = CharBuffer.allocate(20) 之后,hasArray() 始终为 true,之前 - 我们无法使用 buf 引用 b/c 它未初始化。

最佳答案

hasArray 的条件是

(hb != null) && !isReadOnly
<小时/>如果您使用 asReadOnlyBuffer

isReadOnly 会发生变化

CharBuffer.allocate(20).asReadOnlyBuffer();

例如。
所以是的,我们需要它。

<小时/>

走这条线

final CharBuffer cb = instance.getCharBuffer(...);

它是只读的还是非只读的?它是否包含有效的 char[] 数组?我们真的不知道。如果我们这样做

cb.array();

它是一个只读缓冲区,我们得到一个ReadOnlyBufferException
如果它没有 char[] 数组支持,我们会得到一个 UnsupportedOperationException

所以我们可能做的是

if (cb.hasArray()) {
final char[] arr = cb.array();
}

现在我们是异常安全的。
另外,您可以确信 Oracle/OpenJDK/whateverJDK 工程师知道他们在做什么;)

关于java - 为什么我们在 CharBuffer 中需要 `hasArray()` 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55442531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com