我正在尝试类似的东西String s = "test string";for(Character c: s) {}编译器报告错误。我想知道为什么我不能将 foreach 与 String 一起使用?
1 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
原因在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 设计者。
添加回答
举报
0/150
提交
取消