2013-07-08 27 views
1

我在几天内与scala一起工作。我真的很困惑这个问题。每个循环的scala在将java转换为scala时出现错误

我真的试图解决peoblem但我不能..

我的Java代码

@Override 
    public void saveOrUpdateAll(Collection<T> entities) { 
     Session session = getSession(); 
     for (T entity : entities) { 
      session.saveOrUpdate(entity); 
     } 
    } 

Scala代码

@Override 
    def saveOrUpdateAll(entities:Collection[T]){ 
     var session:Session = getSession() 
     var entity:T=null 
     for (entity :entities) { 
      session.saveOrUpdate(entity); 
     } 
    } 

搜索斯卡拉每个。和我真的很困惑的..如果你知道如何解决这个问题,请在这里分享你的答案..和感谢名单..

与问候米兰.. :)

+1

在Scala的'for'中你想要'<-'而不是':',并且根本不需要'var entity'行。 –

+0

@RexKerr你的r8 ..请回答它,我会标记为正确的答案,这真的有助于完整答谢... –

+1

senia的得到了更完整的正确答案。 –

回答

3
override def saveOrUpdateAll(entities: Collection[T]){ 
    import scala.collection.JavaConverters._ 

    val session: Session = getSession() 

    for (entity <- entities.asScala) { 
     session.saveOrUpdate(entity) 
    } 
} 

没有对每个在scala中循环。您应该使用JavaConverters包装您的收藏,并在此处使用for-comprehension

JavaConverters换行Collection使用Wrappers.JCollectionWrapperwithout内存开销。

+0

感谢您的回答,答案是工作真的很有帮助.. –

+0

我怀疑'@Override'注释使用像这样.. –

+1

@milano:如果你想重写父类的方法,你应该使用[override modifier](http://www.artima.com/pins1ed/composition-and-inheritance.html#10.8 )。 – senia

相关问题