您的位置 首页 > 德语词汇

transient是什么意思?用法、例句?你知道Transient 关键字吗?

各位老铁们,大家好,今天由我来为大家分享transient是什么意思?用法、例句,以及你知道Transient 关键字吗?的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

transient是什么意思?用法、例句?你知道Transient 关键字吗?

java中我们的实体类实现Serializable接口,目的就是为了让其可序列化。当然,序列化后的最终目的是为了反序列化,恢复成原先的Java对象,要不然序列化后干嘛呢,所以序列化后的字节序列都是可以恢复成Java对象的,这个过程就是反序列化。

transient的作用及使用方法,官方解释为:

Variablesmaybemarkedtransienttoindicatethattheyarenotpartofthepersistentstateofanobject.\n翻译:“变量可以标记为瞬态,以指示它们不是对象持久状态的一部分。”\n

我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。

其实有时我们并不想让所有的属性都被序列化,那么此时我就可以使用transient关键字;

以下场景可能能够使用到transient关键字:

1、类中的字段值可以根据其它字段推导出来,如在HashMap中的定义的一下变量,size,modCount是属于业务中的中间变量就没必须去序列化;

2、其它,看具体业务需求吧,哪些字段不想被序列化;

importjava.io.Serializable;\n/**\n*类功能说明:三角形\n*类修改者创建日期2019/1/20\n*修改说明\n*<p>Title:Triangle.java</p>\n*\n*@authorforeveWQ\n*@versionV1.0\n**/\npublicclassTriangleimplementsSerializable{\n\nprivateIntegerwidth;\nprivateIntegerheight;\nprivatetransientIntegerarea;\n\npublicTriangle(Integerwidth,Integerheight){\nthis.width=width;\nthis.height=height;\nthis.area=width*height;\n}\n\npublicvoidsetArea(){\nthis.area=this.width*this.height;\n}\n\n@Override\npublicStringtoString(){\nStringBuffersb=newStringBuffer(30);\nsb.append("width长度:");\nsb.append(this.width);\nsb.append("\\nheight高度:");\nsb.append(this.height);\nsb.append("\\narea面积:");\nsb.append(this.area);\nreturnsb.toString();\n}\n}\n@Test\npublicvoidtranisentExample()throwsException{\n\nTriangletriangle=newTriangle(2,3);\nSystem.out.println("1.初始化对象\\n"+triangle);\n\nObjectOutputStreamo=newObjectOutputStream(newFileOutputStream("triangle"));\n\n//转换为流写入对象\no.writeObject(triangle);\no.close();\n\n//从流读取对象\nObjectInputStreamin=newObjectInputStream(newFileInputStream("triangle"));\n\nTrianglerectangle1=(Triangle)in.readObject();\nSystem.out.println("2.反序列化后的对象\\n"+rectangle1);\nrectangle1.setArea();\nSystem.out.println("3.恢复成原始对象\\n"+rectangle1);\nin.close();\n}\n

运行程序结果

结果证明被tranisent修饰的area变量,并没有被序列化

考虑到如果有感兴趣的读者,可以拿代码去测试一下,所以接贴了代码。但是可读性不太好,所以附上idea中的程序,个人觉得看起来舒服点。

关于transient是什么意思?用法、例句的内容到此结束,希望对大家有所帮助。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023