gpt4 book ai didi

java - 为什么我不能在 java for-each 循环中使用现有变量?

转载 作者:行者123 更新时间:2023-12-02 08:08:07 24 4
gpt4 key购买 nike

我猜它不起作用,因为在语法中第一个参数必须具有声明的类型。但是,如果我在带有参数的函数中使用 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);
}
}

有一个相关问题,Java for loop syntax: "for (T obj : objects)" 。那个人问 for-each 语法是什么意思。我知道这意味着什么,我只是想重用现有变量,而不必声明一个新变量。

最佳答案

Java 语言规范 (JLS) 要求您为迭代器声明一个局部变量。

即你需要

for (产品 p : items.keySet()){

您不能从外部作用域借用 p。解决你的困境的一种方法是使用类似的东西

for (Product inner_p : items.keySet()){`
p = inner_p;
/* continue as before*/

但这规避了 JLS 的意图,因此也许将您的代码重组为更优雅的形式可能会更好。

关于java - 为什么我不能在 java for-each 循环中使用现有变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35797774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com