这篇文章主要讲解了“如何用transient将属性脱离序列化”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用transient将属性脱离序列化”吧!
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、成都做网站、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的广南网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
默认情况下当执行了对象的序列化的时候,会将类中的全部属性的内容进行全部的序列化操作,但是很多情况下,有一些属性可能并不需要进行序列化的处理,这个时候就可以在属性定义上使用transient关键字来完成了。
private transient String name;
在进行序列处理的时候name属性的内容是不会被保存下来的,换言之,读取的数据name将是其对应数据类型的默认值”null“。
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable; @SuppressWarnings("serial")class Person implements Serializable {//Person类可以被序列化private transient String name;private int age;public Person(String name, int age) {this.name = name;this.age = age; } @Overridepublic String toString() {return "姓名:" + this.name + "、年龄:" + this.age; } }public class JavaAPIDemo {private static final File SAVE_FILE=new File("D:" + File.separator + "mldn.person");public static void main(String[] args) throws Exception {//saveObject(new Person("小喷嚏",78));System.out.println(loadObject()); }public static void saveObject(Object obj)throws Exception{ ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(SAVE_FILE)); oos.writeObject(obj); //序列化oos.close(); }public static Object loadObject()throws Exception{ ObjectInputStream ois=new ObjectInputStream(new FileInputStream(SAVE_FILE)); Object obj= ois.readObject(); //反序列化ois.close();return obj; } } //姓名:null、年龄:78
如果假设类之中有一些是需要计算保存的属性内容往往是不需要被序列化的,这个时候就可以使用transient,但是在实际开发之中,大部分需要被序列化的类往往都是简单java类,所以这一个关键字的出现频率并不高。
感谢各位的阅读,以上就是“如何用transient将属性脱离序列化”的内容了,经过本文的学习后,相信大家对如何用transient将属性脱离序列化这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!