我想将以下代码从Java转换为Scala:
Foo foo = new Foo() { private static final long serialVersionUID = 12345L; }
类Foo
是一个抽象类。
Scala中的等效代码如何?
答案 0 :(得分:10)
有一个Scala annotation for adding the ID。但似乎您无法将此解决方案应用于匿名内部类。但是,根据Scala FAQ:
在Scala中评估的私有值 到编译时已知的常量 变成私人静态决赛 Java变量。这无证 功能应该为你做的伎俩。 看看实施情况 Scala中的列表(参见例如 SRC /阶/ List.java)。两个类:: 和Nil有一个字段serialVersionUID 以下形式: private val serialVersionUID = numeric literal;
代码
object Ser extends Application {
trait Foo { def xy: Int }
val x = new Foo with java.io.Serializable { def xy = 2; private val serialVersionUID = 1L }
}
使用2.8.1编译器编译好。我没有测试过,但是关于结果类的串行版本是否实际上是提供的版本。