java序列化Serializable和反序列化状态修饰符transient

Serializable序列化接口

使用序列化接口最重要的两个原因是:

1、将对象的状态保存在存储媒体中以便可以在以后重新创建出完全相同的副本;

2、按值将对象从一个应用程序域发送至另一个应用程序域。

实现serializable接口的作用是就是可以把对象存到字节流,然后可以恢复。所以你想如果你的对象没实现序列化怎么才能进行网络传输呢,要网络传输就得转为字节流,所以在分布式应用中,你就得实现序列化,如果你不需要分布式应用,那就没那个必要实现序列化。

tranisent

“不可序列化状态”。
打个比方,如果一个用户有一些敏感信息(譬如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输。这些信息对应的变量就可以被定义为transient类型。换句话说,这个字段的生命周期仅存于调用者的内存中。
如定义类:


    public class People implements Serializable {
    private static final long serialVersionUID = 8294180014912103005L;
    /**
    * 用户名
    */
    private String username;
    /**
    * 密码
    */
    private transient String password;
    }

密码字段为transient,这时候如果对该对象进行序列化,这个密码字段是不会被保存的。

  • 本文作者: dzou | 微信:17856530567
  • 本文链接: http://www.dzou.top/post/616dc7a4.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!