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
听起来不太好。啊,当然,我忘了键入第二个参数。然而,它在我的代码中。