gpt4 book ai didi

java - 什么是非最终变量?

转载 作者:搜寻专家 更新时间:2023-11-01 04:06:37 25 4
gpt4 key购买 nike

我不理解 final 变量的概念。在 for 循环中,我有动态变量 i,这对我引用数组至关重要。一旦我使用 i,它就会抛出一个错误,提示它应该是 final

final 到底是什么?您能否帮助消除该错误?

我的代码在这里:

for( int i = 0; i <4; i++)
{

Bitmap celeb1=Bitmap.getBitmapResource(fimagearray[i]);
Bitmap celeb1_focus=Bitmap.getBitmapResource(fimagearray[i]);
ImageButton celebbutton = new ImageButton(celeb1, celeb1_focus);

celebbutton.setChangeListener(new FieldChangeListener() {

public void fieldChanged(Field field, int context)
{
UiApplication.getUiApplication().pushScreen(new FetchTweets(fusernamearray[i]));

}
});


femaleSec.add(celebbutton);
}

最佳答案

匿名内部类只能从外部作用域访问final 变量。由于 i 不是最终的,因此不能直接访问它。您不能将 i 设为 final,因为它需要更改,而 final 变量无法更改。

作为一个简单的解决方法,在每次循环迭代期间将 i 的值复制到最终变量中:

for( int i = 0; i < 4; i++)
{
final int index = i; // <-- copy i to `index' to use in FieldChangeListener

// ...

celebbutton.setChangeListener(new FieldChangeListener() {

public void fieldChanged(Field field, int context)
{
UiApplication.getUiApplication().pushScreen(
new FetchTweets(fusernamearray[index])); // <-- `index'
}
});


femaleSec.add(celebbutton);
}

关于java - 什么是非最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8455994/

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