2012-04-04 58 views
0

结果我想要做这样的事情:的Java:从匿名类操作

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,因为它不是最终的。然而,最后的结果不会有帮助:它会保持不变。

解决方法是什么?

回答

2

使scadenze最终并初始化为新的List。在你的匿名课堂内,你仍然可以添加到列表中;被宣布为最终并不妨碍这一点。

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