我想做这样的事情:
public class ScadenzaService {
...
public List<Scadenza> tutteLeScadenze() {
List<Scadenza> scadenze = null;
txm.doInTransaction(new TransactionAction() {
@Override
public void perform() {
scadenze = dao.getAll(Scadenza.class);
}
});
return scadenze;
}
但是我不能访问内部类中的scadenze,因为它不是最终的。但是,final并没有帮助:它使常量不变。
解决方法是什么?
最佳答案
使scadenze
为最终版本,并将其初始化为新的List
。在匿名课程中,您仍然可以添加到列表中;被声明为final并不能阻止这一点。
public List<Scadenza> tutteLeScadenze() {
final List<Scadenza> scadenze = new ArrayList<Scadenza>();
txm.doInTransaction(new TransactionAction() {
@Override
public void perform() {
scadenze.addAll(dao.getAll(Scadenza.class));
}
});
return scadenze;
}