transient是Java中序列化相关的关键字,transient的中文意思短暂的, 瞬时的,意思表达非常到位。transient用于修饰成员变量(包括静态和非静态的),由transient修饰的变量在序列化时不保存状态,也即就是说transient变量的值不会被写入到对象流中。关于transient的具体用法本文不做详述,Google上一搜就是一堆结果,下面要介绍的是关于transient应用中需要注意的地方。
上文说的序列化时变量的状态不保存,是指变量的wrapper类序列化,而不是在wrapper类中将变量对象(如果变量是类类型)序列化,有点绕口了,看个例子吧。
- public class DataContainer implements Serializable
- {
- private static final long serialVersionUID = 2264992695229291695L;
-
- private String strType;
- private int primeType;
-
- public DataContainer(String strData, int intData)
- {
- this.strType = strData;
- this.primeType = intData;
- }
-
- public String getStrData()
- {
- return this.strType;
- }
-
- public int getIntData()
- {
- return primeType;
- }
- }
DataContainer 表示存放数据容器的类,将作为序列化的对象,下面是具体应用的类:
- public class TestAPP implements Serializable
- {
- private transient DataContainer tdatacontainer;
-
- public TestAPP()
- {
- this.tdatacontainer = new DataContainer(makeData(), 1);
- }
-
- private String makeData()
- {
- StringBuilder sb = new StringBuilder(1000);
- for(int i = 0; i< 1000; i++)
- {
- sb.append("This is a Test");
- }
- return sb.toString();
- }
-
- public DataContainer getContainer()
- {
- return tdatacontainer;
- }
-
- public static void TestOne() throws IOException
- {
- TestAPP test = new TestAPP();
- FileOutputStream fout = new FileOutputStream("TestOne.dat");
- ObjectOutputStream obout = new ObjectOutputStream(fout);
- obout.writeObject(test);
- obout.close();
- fout.close();
- }
-
- public void TestTwo() throws IOException
- {
- if(tdatacontainer != null)
- {
- FileOutputStream fout = new FileOutputStream("TestTwo.dat");
- ObjectOutputStream obout = new ObjectOutputStream(fout);
- obout.writeObject(tdatacontainer);
- obout.close();
- fout.close();
- }
- }
-
- public static void main(String[] args) throws IOException, ClassNotFoundException
- {
- TestOne();
- new TestAPP().TestTwo();
- }
- }
在Java项目目录下可以看到,TestOne.dat的大小为1K,而TestTwo.dat的大小为14K,说明TestAPP 别学列化后其成员变量tdatacontainer的状态没有被保存,而序列化TestAPP的transient成员变量tdatacontainer后其状态被保存,尽管tdatacontainer被声明为transient。反序列化后也说明这一点,为较少长度,本文不贴出反序列化代码。
分享到:
相关推荐
在 Java 编程中,transient 关键字是一个非常重要的概念,它用来说明一个属性是临时的,不会被序列化。在 Java 中,序列化是指将对象的状态信息转换为字节流的过程,以便于对象在网络上传输或存储。在这个过程中,...
### Java中的transient关键字详解 在Java编程语言中,`transient`关键字是一个非常重要的概念,主要用于对象序列化过程中对特定变量的控制。当一个类实现了`Serializable`接口时,其对象可以被序列化为一个持久化的...
在Java编程语言中,`transient`是一个非常重要的关键字,它与对象持久化和序列化密切相关。当一个字段被声明为`transient`时,它表明该字段的值不会随着对象的序列化而保存。这通常用于那些不希望或者不需要在序列化...
transient stability matlab
在Java编程语言中,`transient`是一个非常重要的关键字,它与对象的序列化息息相关。序列化是将一个对象的状态转换为字节流的过程,这样就可以存储或在网络中传输。当我们标记一个字段为`transient`时,意味着该字段...
transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,
TRANSIENT仿真(以共射放大器为例)工程
THERMAL TRANSIENT ANALYSIS
The effects of surface wettability, from superhydrophilic to superhydrophobic, on transient pool boiling of water under atmospheric pressure were experimentally examined by means of the quenching ...
EMTDC,即电磁暂态计算装置(Electromagnetic Transient DC),它是一种强大的电磁暂态仿真引擎,自20世纪70年代中期以来一直在不断演进。 EMTDC的起源可以追溯到1969年赫尔曼·多姆尔(Hermann Dommel)博士的经典...
在Java编程语言中,`transient`关键字是一个非常重要的概念,它与对象的序列化过程紧密相关。序列化是将一个对象的状态转换为字节流,以便存储或在网络中传输。当一个类实现了`Serializable`接口,该类的对象就可以...
Transient Voltage Suppressors (TVS’s) are devices used to protect vulnerable circuits from electrical overstress such as that caused by electrostatic discharge, inductive load switching and induced ...
此外,MATLAB脚本文件"1-D——Transient.m"是实现一维瞬态传热数值模拟的核心工具。学习者通过运行这个脚本,能够直观地观察到温度随时间和位置变化的动态图形,并通过这些图形深入理解传热过程的物理本质。脚本中...
在本工作坊“Rocky DEM Workshop 15 - Transient Structural Part B_Mechanical Coupling (Workbench)”中,我们将深入探讨如何利用Ansys Workbench进行离散元素法(DEM)与有限元分析(FEA)的一向耦合模拟,特别...
在Java编程语言中,`transient`关键字与对象的序列化(serialization)机制密切相关,它在处理对象状态的持久化时扮演着关键角色。本文将深入探讨`transient`关键字的功能、用途以及它如何影响Java对象的序列化过程。 ...
transient in power system
标题中的"rlc.zip_rlc transient_transient"暗示我们正在探讨RLC电路在瞬态状态下的行为,特别是针对2nd Order电路。描述进一步强调了我们要讨论的是直流(DC)电路中的瞬态响应,即电路在初始条件改变后,电压和电流...
The test results demonstrate the superiority of the both DL algorithms over other methods in the application of power system transient disturbance classification. Keywords—Convolutional Neural ...
This is coding for case transient stabilit. this is simple m file for solve the transient stability case
investigate dynamic and transient