如何将@SerialVersionUID添加到匿名类?

时间:2011-04-05 10:10:24

标签: java serialization scala programming-languages anonymous-class

我想将以下代码从Java转换为Scala:

Foo foo = new Foo() { private static final long serialVersionUID = 12345L; }

Foo是一个抽象类。

Scala中的等效代码如何?

1 个答案:

答案 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编译器编译好。我没有测试过,但是关于结果类的串行版本是否实际上是提供的版本。