Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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
Java 为什么可以’;t StringUtils.join是否接受StringCharacterIterator?_Java_Iterator_Apache Commons_Apache Stringutils - Fatal编程技术网

Java 为什么可以’;t StringUtils.join是否接受StringCharacterIterator?

Java 为什么可以’;t StringUtils.join是否接受StringCharacterIterator?,java,iterator,apache-commons,apache-stringutils,Java,Iterator,Apache Commons,Apache Stringutils,以下代码应该可以工作,因为join接受迭代器作为参数: import static org.apache.commons.lang.StringUtils.join; import java.text.StringCharacterIterator; … join(new StringCharacterIterator("A String"), " "); 唉,事实并非如此。有人能给我解释一下原因吗?根据文档,StringCharacterIterator继承自且仅继承自Character

以下代码应该可以工作,因为
join
接受迭代器作为参数:

import static org.apache.commons.lang.StringUtils.join;
import java.text.StringCharacterIterator;

…

join(new StringCharacterIterator("A String"), " ");

唉,事实并非如此。有人能给我解释一下原因吗?

根据文档,
StringCharacterIterator
继承自且仅继承自
CharacterIterator
字符迭代器
不是从泛型
迭代器
继承的,这正是
联接
所需要的


首先,join方法接受两个参数:迭代器和分隔符字符串或字符


如果你看一下,你会发现这个类没有实现
java.util.Iterator

,所以答案是java标准库一团糟。所以我需要“飞羊”:部分是的。当您处理跨库时,比如Oracle/Java和Apache,它会变得更加混乱。它以迭代器结尾的事实并不意味着它必须具有相同的接口。哈希表与WoodenTable没有太多的共同点。我不想就此争论。“
Iterator
”在大多数编程语言中是一个明确的术语(Java就是其中之一)。如果某个对象没有实现相同名称的内置接口,就不能调用迭代器。@flying sheep实际上,如果查看javadoc中的迭代器类,它会显式地谈论集合(数组不是集合,或者没有实用方法将其转换为集合)。字符串也是一个字符数组,如图所示,它不是Oracle land中的集合。我猜它被称为
StringCharacterIterator
,因为
CharacterArrayTraversalAgent
听起来不太好。啊,当然,我忘了键入第二个参数。然而,它在我的代码中。