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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】博客园2025新款「AI繁忙」系列T恤上架,前往周边小店选购
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何把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详细过程