【Transient】Transient 的作用和用法

1  前言

 大家经常看源码会发现这个关键字,那么我们这节我们讲一下 transient 关键字,先看看它的的用法和作用:

  • 用法:只能用于修饰成员变量
  • 作用:Java 的 Serilizable 提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用序列化机制来保存它,这是可以通过 transient 来修饰,就不会持久化该属性了。

2  序列化

2.1  什么是序列化

简单来说:将数据结构或对象转换成二进制字节流的过程

2.2  为什么要序列化

  • 用于对象传输,比如我们的服务要把结果通过网络返回给用户,是不是需要先把结果序列化,然后才能传输,你不序列化是不是就是难为人家网络
  • 用于持久化,我们的对象是不是要落磁盘,就像我们的数据库持久化数据

2.3  怎么序列化

对于我们的 java 只需要实现 Serializable,至于人 java 内部怎么序列化的,咱们这里就不做讨论了.

3  示例

我们来写个例子尝试一下:

复制代码
public class TestTransient {
    static class Person implements Serializable {
        private String name;
        private Integer age;
        private transient String password;

        public Person(String name, Integer age, String password) {
            this.name = name;
            this.age = age;
            this.password = password;
        }

        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", password='" + password + '\'' +
                    '}';
        }
    }

    public static void main(String[] args) throws IOException, ClassNotFoundException {
        Person person = new Person("狗子", 1, "xxx");
        System.out.println("序列化前:" + person);
        ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("person.txt"));
        // 持久化对象-序列化
        os.writeObject(person);
        os.flush();
        os.close();

        ObjectInputStream is = new ObjectInputStream(new FileInputStream("person.txt"));
        // 读取对象-反序列化
        person = (Person) is.readObject();
        is.close();
        System.out.println("序列化后:" + person);
    }
}
复制代码

4  小结

  • transient 只能修饰变量,用于忽略序列化;
  • 一个静态变量不管是不是 transient 修饰,都不能被序列化(如果反序列化后类中static变量还有值,则值为当前JVM中对应static变量的值)
posted @   酷酷-  阅读(151)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示