transient关键字
2021/8/18 23:11:57
本文主要是介绍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
这篇关于transient关键字的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?