如何添加@SerialVersionUID到一个匿名类



我想把下面这段代码从Java翻译成Scala:

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

Foo是一个抽象类。

等效的代码在Scala中是怎样的?

有一个用于添加ID的Scala注释。但似乎不能将此解决方案应用于匿名内部类。但是,根据Scala FAQ:

在Scala私有值中求值到编译时已知的常量是不是变成了私有静态finalJava变量。这个无证功能应该能帮你解决这个问题。来看看的实现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编译器中可以很好地编译。我还没有测试它,尽管结果类的串行版本是否实际上是提供的。

相关内容

  • 没有找到相关文章

最新更新