什么时候应该实现Serializable接口?

问题

public class Contact implements Serializable {
    private String name;
    private String email;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

-我应该何时实现Serializable接口?

  • 为什么我们这样做?
  • 它是否具有任何优势或安全性?

#1 热门回答(122 赞)

  • 从这个"序列化"的事情到底是什么?:它允许你获取一个对象或一组对象,将它们放在磁盘上或通过有线或无线传输机制发送它们,然后,可能在另一台计算机上,反转过程:复活原始对象。基本机制是将对象展平为一维比特流,并将该比特流转换回原始对象。就像"星际迷航"中的"转运"一样,它只是将一些复杂的东西变成一个1和0的平坦序列,然后取1和0的序列(可能在另一个地方,可能在另一个时间)并重建原始复杂的"东西"。因此,当你需要存储对象的副本时,实现Serializable接口,将它们发送到在同一系统或网络上运行的另一个进程。
  • 因为你想存储或发送对象。
  • 它使存储和发送对象变得容易。它与安全无关。

#2 热门回答(35 赞)

  • 如果希望能够将类的实例转换为一系列字节,或者当你认为Serializable对象可能引用类的实例时,请实现Serializable接口。
  • 如果要保留实例或通过网络发送它们,可序列化类很有用。
  • 可以轻松传输Serializable类的实例。但是,序列化确实会产生一些安全后果。阅读Joshua Bloch的"Effective Java"。