我想将以下Java代码翻译成Scala:
Foo foo = new Foo() { private static final long serialVersionUID = 12345L; }
Foo
类是一个抽象类。
Scala中对应的代码应该是什么样子?
我想将以下Java代码翻译成Scala:
Foo foo = new Foo() { private static final long serialVersionUID = 12345L; }
Foo
类是一个抽象类。
Scala中对应的代码应该是什么样子?
有一个Scala注解可用于添加ID。但是看起来,您不能将此解决方案应用于匿名内部类。但是,根据Scala FAQ:
在Scala中,评估为在编译时已知的常量的私有值会转换为Java的私有静态final变量。 这个未经记录的特性对你应该有所帮助。 只需查看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 }
}
使用2.8.1编译器可以成功编译。不过我还没有测试过生成的类的串行版本是否确实是提供的那个版本。
@SerialVersionUID
,并展示一个带有serialVersionUID
的构造匿名类的示例,以解答上述问题。 - soc