Java transient关键字原理解析
这篇文章主要介绍了Javatransient关键字原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java中的transient关键字被用来表示变量将不被序列化处理。那么在理解transient关键字之前,我们先了解下什么是序列化。
什么是序列化
序列化是对象进行持久化处理,也就是说,将对象转化成一个字节流进行存储(比如存储为一个字节文件)或传输(通过网络传输字节)。同时,我们也可以从字节中反序列化一个对象出来。这是Java程序中一个重要的概念,因为网络应用中通常需要将对象序列化成字节传输。每一个需要序列化的对象,都要实现Serializable接口。
transient关键字
默认情况下,对象所有的变量都会转变成持久状态。但是有时候,一些变量可能不需要序列化,因为没必要对这些变量进行序列化。这时,你就可以将这些变量申明为transient。如果一个变量被申明为transient,那么这个变量就不会被序列化。
通过下面这个例子应该能够解释transient关键字的作用:
publicclassNameStoreimplementsSerializable{ privateStringfirstName; privatetransientStringmiddleName; privateStringlastName; publicNameStore(StringfName,StringmName,StringlName){ this.firstName=fName; this.middleName=mName; this.lastName=lName; } @Override publicStringtoString(){ return"NameStore{"+ "firstName='"+firstName+'\''+ ",middleName='"+middleName+'\''+ ",lastName='"+lastName+'\''+ '}'; } } publicclassTransientExample{ publicstaticvoidmain(String[]args)throwsException{ NameStorenameStore=newNameStore("Steve","Middle","Jobs"); ObjectOutputStreamo=newObjectOutputStream(newFileOutputStream("nameStore")); //writingtoobject o.writeObject(nameStore); o.close(); //readingfromobject ObjectInputStreamin=newObjectInputStream(newFileInputStream("nameStore")); NameStorenameStore1=(NameStore)in.readObject(); System.out.println(nameStore1); } }
上面例子的输出:
NameStore{firstName='Steve',middleName='null',lastName='Jobs'}
middleName变量被申明为transient,因此没有被序列化.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。