我正在尝试类似的东西
String s = "test string";
for(Character c: s) {
}
编译器报告错误。我想知道为什么我不能将 foreach 与 String 一起使用?
原因在JLS 14.14.2 中列出:
EnhancedForStatement: for ( {VariableModifier} LocalVariableType VariableDeclaratorId : Expression ) Statement
...
的类型
Expression
必须是原始类型的子类型Iterable
或数组类型(第 10.1 节),否则会发生编译时错误。
AString
不是Iterable
数组类型的子类型或数组类型。因此.... 编译错误。
正如@shmosel 所提到的,您可以遍历char[]
返回的s.toCharArray[]
. 但是,这将创建一个新数组1。
1 - ... 除非您的 JVM 的 JIT 编译器足够聪明,可以将其优化掉。我不认为他们目前可以做到这一点,而且我不会打赌想要实现这种优化的 Java 设计者。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句