【问题标题】:How to implement interface Serializable in scala?如何在scala中实现接口Serializable?
【发布时间】:2011-09-26 23:00:47
【问题描述】:

我有这样的 scala 类:

@Entity("users")
class User(@Required val cid: String, val isAdmin: Boolean = false, @Required val dateJoined: Date = new Date() ) {
  @Id var id: ObjectId = _



    @Reference
  val foos = new ArrayList[Foo]

    }

如果它是一个 Java 类,我会简单地将实现 java.io.Serializable 但这在 scala 中不起作用。上面声明的 foos 是私有的还是公共的?

【问题讨论】:

    标签: scala


    【解决方案1】:

    How do I use a @serializable scala object?

    除非另有说明,否则 foos 是公开的

    【讨论】:

      【解决方案2】:

      scala 2.9.x 也有一个名为 Serializable 的接口,你可以扩展或混合它。在 2.9.x 之前,@serializable 是唯一的选择。

      【讨论】:

      • 我正在使用 scala 2.10 如何实现 Serializable?我尝试使用 Serializable 但不起作用。谢谢!
      • @GavinNiu 你在找class FooBar with Serializeable吗?
      【解决方案3】:

      您可以在您的 Scala 类上添加序列化注释(例如在 JPA 实体中):

      因为 Serializable 是一个 trait,你可以将它混入一个类中,即使 您的课程已经扩展了另一个课程:

      @SerialVersionUID(114L)
      class Employee extends Person with Serializable ...
      

      在此链接中查看更多详细信息: https://www.safaribooksonline.com/library/view/scala-cookbook/9781449340292/ch12s08.html

      【讨论】:

      • 我用 scala 编写的实体 (JPA) 类的示例:
      【解决方案4】:

      我在 Scala 中使用序列化属性编写的实体 (JPA) 类的示例:

      import javax.persistence._
      
      import scala.beans.BeanProperty
      import java.util.Date
      
      @SerialVersionUID(1234110L)
      @Entity
      @Table(name = "sport_token")
      class Token() extends Serializable {
      
        @Id
        @SequenceGenerator(name="SPORT_TOKEN_SEQ",catalog="ESPORTES" , sequenceName="SPORT_TOKEN_SEQ", allocationSize=1)
        @GeneratedValue(strategy=GenerationType.SEQUENCE , generator="SPORT_TOKEN_SEQ")
        @BeanProperty
        var id: Int = _
      
        @BeanProperty
        @Column(name="token")
        var token: String = _
      
        @BeanProperty
        @Column(name="active")
        var active: Int = _
      
      }
      

      【讨论】:

        猜你喜欢
        • 2013-12-31
        • 2012-08-03
        • 2015-01-27
        • 2020-08-14
        • 2011-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-09
        相关资源
        最近更新 更多