java之transient

在需要将对象序列化,但是不想序列化敏感信息时,使用transient关键字对jvm“说”我不想要序列化这个属性,注意transient只能运用在属性上,不能在方法,类。

如:

public class User implements Serializable {
    private static final long serialVersionUID = -8069315638464847330L;
    private String userName;
    private transient String password;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

使用:

public class Main {
    public static void main(String[] args) throws IOException {
        User user = new User();
        user.setUserName("liao");
        user.setPassword("liso");

        System.out.println("read before Serializable: ");
        System.out.println("username: " + user.getUserName());
        System.out.println("password: " + user.getPassword());
        ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("user.txt"));
        outputStream.writeObject(user);
        outputStream.flush();
        outputStream.close();

    }

}

ps:如果要序列化某个对象,需要在该对象的类实现Serializable接口,且生成serialVersionUID,在反序列化的时候与本地的类的serialVersionUID进行比较,一致则可以进行反序列化,不一致则会抛出异常InvalidCastException。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 10,924评论 0 24
  • 一、 序列化和反序列化概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化de...
    步积阅读 1,458评论 0 10
  • 概述 java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。java.io ...
    Steven1997阅读 9,244评论 1 25
  • Java序列化 1. 什么是序列化? 序列化是将一个对象的状态,各属性的值序列化保存起来,然后在合适的时候通过反序...
    王小冬阅读 152评论 0 0
  • 高三的每一天我几乎都会问自己一个问题 未来要做什么 看到触目惊心的分数总会觉得人生无望 高考失利横跨半个中国从北到...
    悬崖云书阅读 315评论 10 0