rec*_*urf 2 java foreach for-loop
我猜它不起作用,因为在语法中第一个参数必须具有声明的类型.但是,如果我在一个带有参数的函数中使用for-each循环,就像我在这个例子中那样呢?变量p有一个声明的类型,我只想重用它.
public void addItem(Product p) {
// ensure that we don't add any nulls to the item list
if (p != null ) {
int i = 0;
for (p : items.keySet()) {
i++;
}
items.put( p , i);
}
}
Run Code Online (Sandbox Code Playgroud)
有一个相关的问题,Java for循环语法:"for(T obj:objects)".那个询问for-each语法意味着什么.我知道这意味着什么,我只想重用一个现有的变量,而不是必须声明一个新变量.
Java语言规范(JLS)要求您为迭代器声明一个局部变量.
即你需要
for (Product p : items.keySet()){
你不能从外部范围借款 p.摆脱困境的一种方法是使用类似的东西
for (Product inner_p : items.keySet()){`
p = inner_p;
/* continue as before*/
Run Code Online (Sandbox Code Playgroud)
但这会绕过JLS 的意图,因此将代码重构为更优雅的形式可能会更好.
| 归档时间: |
|
| 查看次数: |
2653 次 |
| 最近记录: |