soc*_*soc 11 java serialization programming-languages scala anonymous-class
我想将以下代码从Java转换为Scala:
Foo foo = new Foo() { private static final long serialVersionUID = 12345L; }
Run Code Online (Sandbox Code Playgroud)
类Foo是一个抽象类.
Scala中的等效代码如何?
Dir*_*irk 10
有一个Scala注释用于添加ID.但似乎您无法将此解决方案应用于匿名内部类.但是,根据Scala FAQ:
在Scala中,计算到编译时已知的常量的私有值将转换为私有静态最终Java变量.这个没有文档的功能应该可以帮到你.只需查看Scala中列表的实现(参见例如src/scala/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 }
}
Run Code Online (Sandbox Code Playgroud)
使用2.8.1编译器编译好.我没有测试它,但是关于结果类的串行版本是否实际上是提供的.