我想做这样的事情:

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;
}

09-28 10:22