2016-08-12 99 views
1

很多时候,我看到一个模型类将实现Serializable,但绝不会在序列化。为什么序列化模型类

  1. 这里实施Serializable的目的是什么?
  2. 如果不使用序列化,我将要错过?代码通信的方式是否有影响?

public class Stock implements Serializable{ 

    private int stockId; 
    private String stockCode; 
    private String stockName; 

    //Getter and setter 
} 
+0

取决于你的类的上下文;如果你在需要你的类可序列化的东西(如框架)中运行它,那就是原因。 –

+0

实现serializable使它如此,如果有人想要在使用它们可以的对象的任何点序列化股票。如果没有实现,没有人能够序列化它。正如戴夫所说,如果你使用一些像Java bean一样,你可能需要序列化它。 – Javant

+0

@Javant Thanx我认为这一点很重要。 – suresh

回答

2

一种说法是必要的吗?

只是一个标记,指出为类的客户提供序列化它们的实例的可能性,如果他们希望的话。

例如,如果你实例化股票类和要保存库存情况在一个文件中,你可以做到这一点感谢这个标记。 API(例如Jaxb或Java本地序列化机制)通常依赖于此接口的实现来序列化类。

如果没有使用序列化,我会错过什么?代码通信的方式是否对 有影响?

它没有被使用,因为它是标记接口,所以在实例的通信中没有开销或转换。只有当序列化发生时,实例的通信才会改变。

0

Serializable只是一个标记接口没有开销*。 如果你想Aimplement serializable和类A包含Stock类型字段,Stock也应该实现序列化。

可能不会有直接的Stock类实例序列化。但它将通过A类实例序列化。

还在实施,如果你想Stock瞬间变成什么是这里的目的,以实现Serializable的

type foo(? extends Serializable param)