Apache集合UnmodifiableSet为scala不可变集合

时间:2013-11-15 09:15:15

标签: scala scala-java-interop apache-commons-collection

当我得到这个时我该怎么办?

java.lang.ClassCastException: org.apache.commons.collections.set.UnmodifiableSet 
    cannot be cast to scala.collection.immutable.Set

1 个答案:

答案 0 :(得分:1)

你不能在它们之间强制转换,但你应该能够使用scala.collection.JavaConverters转换java.util.Set(UnmodifiableSet实现这个)=> mutable.Set,然后调用.toSet转换为immutable.Set,例如:

import org.apache.commons.collections.set.UnmodifiableSet
import scala.collection.JavaConverters._
val u = new UnmodifiableSet()
val s = u.asScala.toSet
println(s)

请参阅: http://www.scala-lang.org/api/current/index.html#scala.collection.JavaConverters

(或者使用JavaConversions,asScala可以隐式发生 - 通常显式更好)