📂Java
🔖java
2021-08-18 21:21阅读: 88评论: 0推荐: 0

transient关键字

什么是序列化

  • 序列化: 将数据结构或对象转换成二进制字节流的过程

  • 反序列化:将在序列化过程中所生成的二进制字节流的过程转换成数据结构或者对象的过程

    作用:持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象

Java的serialization提供了一种持久化对象实例的机制,当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。

对于不想进行序列化的变量,使用 transient 关键字修饰。

transient 关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被 transient 修饰的变量值不会被持久化和恢复。

transient 一般在实现了Serializable接口的类中使用

class Transient implements Serializable {
    private String name;
    private transient String address;
    private static String nation = "中国";

    // constructors, toString, getters and setters
}
@Test
public void testTransient() throws Exception {
    // 实例化一个对象
    Transient t = new Transient("Dallas", "上海");
    System.out.println("序列化前=====" + t);

    // 序列化进磁盘
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("transient.txt"));
    oos.writeObject(t);
    oos.close();

    // 反序列化
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream("transient.txt"));
    t = (Transient) ois.readObject();
    System.out.println("序列化后=====" + t);

}

测试结果:

序列化前=====Transient{name='Dallas', address='上海', nation='中国'}
序列化后=====Transient{name='Dallas', address='null', nation='中国'}

注意点:

  • transient 只能修饰变量,不能修饰类和方法。
  • transient 修饰的变量,在反序列化后变量值将会被置成类型的默认值。例如,如果是修饰 int 类型,那么反序列后结果就是 0

本文作者:Dallas98

本文链接:https://www.cnblogs.com/Dallas98/p/15158900.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Dallas98  阅读(88)  评论(0)    收藏  举报
编辑推荐:
· 如何把ASP.NET Core WebApi打造成Mcp Server
· Linux系列:如何用perf跟踪.NET程序的mmap泄露
· 日常问题排查-空闲一段时间再请求就超时
· Java虚拟机代码是如何一步一步变复杂且难以理解的?
· 领域驱动的事实与谬误 一 DDD 与 MVC
阅读排行:
· C#/.NET/.NET Core优秀项目和框架2025年4月简报
· Linux系列:如何用perf跟踪.NET程序的mmap泄露
· 为什么AI多轮对话那么傻?
· .NET + AI | Semantic Kernel vs Microsoft.Extension
· windows11 安装WSL2详细过程
蜀ICP备20020397号
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开