gpt4 book ai didi

java - 已将 int 设置为 Final 但无法分配 Final int

转载 作者:行者123 更新时间:2023-12-01 07:26:51 25 4
gpt4 key购买 nike

我是java和android的初学者。在我尝试制作的应用程序中,我使用了以下 for 循环:

for(int current = 0; current < cityDetailsArray.size(); current++) {
row = new TableRow(this);

OnClickListener rowClickListener = new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDetailsView(cityDetailsArray.get(current)); //error - Cannot refer to a non-final variable current inside an inner class defined in a different method
}
};

row.setOnClickListener(rowClickListener);
//rest of the loop
}

因此,如评论中所示,弹出了一个错误,解决方法是将 final 添加到 int current 中。我这样做了,然后在 final int current 行中弹出了这个错误:

The final local variable current cannot be assigned. It must be blank and not using a compound assignment

没有显示修复方法,但显然是删除final。我该如何解决这个问题?

最佳答案

更好的选择是使用 enhanced for loop ,因此您不需要 final int 变量,也不需要 int 变量:

for (final CityDetail cityDetail : cityDetailsArray) {
OnClickListener rowClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
showDetailsView(cityDetail);
}
};
row.setOnClickListener(rowClickListener);
//rest of the loop
}

请注意,将数据从当前方法传递到 anonymous class 时您需要使用 final 变量,因为匿名内部类不应该能够修改引用(在基元的情况下,它是值)。

关于java - 已将 int 设置为 Final 但无法分配 Final int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23075507/

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