Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String.chars()和String.codePoints()上的javadoc是否不正确?_Java_String_Javadoc_Java 8 - Fatal编程技术网

String.chars()和String.codePoints()上的javadoc是否不正确?

String.chars()和String.codePoints()上的javadoc是否不正确?,java,string,javadoc,java-8,Java,String,Javadoc,Java 8,查看Java 8中的String.chars()方法,我们可以看到以下内容: 默认的IntStream字符() 返回一个int zero流,扩展此序列中的字符值。映射到代理代码点的任何字符都会通过unexported传递 如果序列在读取流时发生变异,则结果未定义 返回: 来自此序列的字符值的IntStream 自: 1.8 正如我们所看到的,我们必须在CharSequence中找到这个javadoc,因为它没有在String中重新定义。这里的参数同样适用于String.codePoints()

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

默认的IntStream字符()

返回一个int zero流,扩展此序列中的字符值。映射到代理代码点的任何字符都会通过unexported传递

如果序列在读取流时发生变异,则结果未定义

返回:
来自此序列的字符值的IntStream
自:
1.8

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

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


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

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

在对字符串调用此方法时,由于字符串是不可变的,因此无法修改序列

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


就像“如果一只动物有腿,那么它可以行走”这句话并不意味着所有动物都有腿。

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

在对字符串调用此方法时,由于字符串是不可变的,因此无法修改序列

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


正如“如果一只动物有腿,那么它可以行走”这句话并不意味着所有动物都有腿。

我应该补充一点,它可能意味着不熟悉推理逻辑的用户的字符串不可变。我仍然认为它的表述是可疑的。不熟悉推理逻辑的用户应该在考虑编程之前熟悉它,IMHO。编程都是关于逻辑的。我应该补充一点,它可能意味着不熟悉推理逻辑的用户的字符串不可变。我仍然认为它的表述是可疑的。不熟悉推理逻辑的用户应该在考虑编程之前熟悉它,IMHO。编程就是逻辑。