下面的代码在循环内生成一个按钮,并尝试从按钮内部传递一个字符串参数给按钮侦听器。我没有达到预期的效果。当我按下每个唯一的'buttonField'对象时,变量'key'在新屏幕上的值相同。下面的代码是否正确?将变量从监听器中传递给构造函数
由于
Enumeration keysEnumeration = table.keys();
while(keysEnumeration.hasMoreElements()){
key = (String)keysEnumeration.nextElement();
buttonField.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field field, int context) {
UiApplication.getUiApplication().pushScreen(new Screen(key));
}
});
add(buttonField);
}
黑莓jde im中不支持泛型使用 – 2011-03-14 15:08:29
感谢您的帮助,它现在的工作。你介意阐述为什么关键需求是最终的? - – 2011-03-14 15:09:08
@ user470184 Java规范要求它。它可能已被定义为不必要的,并且内部类引用该字段(对引用的最终引用)或者创建值(它是引用)的副本。任一选项都可能导致特定代码的非显而易见的行为。也许更好地使该领域有效或隐含地最终。所以到目前为止,Java一直坚持一种功能性的方法,即让变量不变。 Lambdas在JDK8中是一样的。 – 2011-03-14 15:20:58