gpt4 book ai didi

java - String.chars() 和 String.codePoints() 上的 javadoc 不正确吗?

转载 作者:行者123 更新时间:2023-11-29 07:02:27 25 4
gpt4 key购买 nike

查看 Java 8 中的 String.chars() 方法,我们可以看到以下 javadoc :

default IntStream chars()

Returns a stream of int zero-extending the char values from this sequence. Any char which maps to a surrogate code point is passed through uninterpreted.

If the sequence is mutated while the stream is being read, the result is undefined.

Returns:
an IntStream of char values from this sequence
Since:
1.8

正如我们所见,我们必须在 CharSequence 中找到这个 javadoc,因为它没有在 String 中重新定义。此处相同的参数也适用于 String.codePoints()

javadoc 描述:
如果在读取流时序列发生变化,则结果未定义。

但字符串(与 CharSequence 相对)是不可变的,因此这里的 javadoc 对于 String 类是不正确的吗?我的感觉是它在逻辑上仍然是正确的,但它也有点暗示 String 中的 chars[] 可以变异,这直接违背了不变性。

最佳答案

嗯,这只是一个与语言相关的语义问题。 javadoc 适用于任何字符序列,无论是否可变。它表示如果序列被修改,那么这些方法的结果是未定义的。

碰巧在字符串上调用此方法时,无法修改序列,因为字符串是不可变的。

以上并不意味着字符串会因为这种方法而失去不变性。

就像“如果动物有腿,那么它就能走路”这句话并不意味着所有的动物都有腿。

关于java - String.chars() 和 String.codePoints() 上的 javadoc 不正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23930471/

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