首页天道酬勤java实现序列化,java中静态变量存在哪里

java实现序列化,java中静态变量存在哪里

张世龙 05-06 03:43 72次浏览

在Java中,序列化是一个概念,它将对象的状态写入字节流,以便可以使用JPA和RMI等技术通过网络传输。

序列化对象-确保类实现了序列化接口。

创建文件输出流对象。 此对象表示保存对象的文件的文件(抽象路径)。

通过传递上面创建的FileOutputStream对象创建ObjectOutputStream对象。

使用writeObject ()方法将对象写入文件。

取消序列化的对象创建一个FileInputStream对象,该对象表示包含序列化对象的文件。

使用readObject ()方法从文件中读取对象。

使用获取的对象。

反序列化对象中的变量

如果只对一个对象进行反序列化,则实例变量将被保存,并且在进程后具有相同的值。

瞬态变量-不考虑瞬态变量的值。 从序列化中排除。 例如,如果声明瞬态变量,则非序列化后的值始终为null、false或0 (缺省值)。

静态变量-反序列化期间不保留静态变量的值。 实际上,静态变量也不会序列化,因为它属于类。 如果取消序列化,则从类中获取当前值。

样品

在此过程中,在反序列化之前修改了实例的值、类的静态变量和瞬态变量。

在此步骤之后,实例变量的值将相同。 临时变量显示默认值,静态变量显示类中的新[当前]值。 importjava.io.FileInputStream;

importjava.io.FileOutputStream;

import Java.io.object inputstream;

import Java.io.object output stream;

importjava.io.Serializable;

classtudentimplementsserializable {

隐私名称;

隐私保护区;

隐私保护措施层=2018;

公共事件

system.out.println (thisisaconstructor );

this.name='Krishna ';

this.age=25;

}

公共稳定(字符串名称,intage )。

this.name=name;

this.age=age;

}

公共语音显示(

system.out.println (' name : ' this.name );

system.out.println(age: ) this.age );

system.out.println(year: ) student.year );

}

公共语音集名称(字符串名称) {

this.name=name;

}

公共语音设置(intage ) {

this.age=age;

}

publicvoidsetyear (内年) {

Student.year=year;

}

}

publicclassSerializeExample{

publicstaticvoidmain (字符串args [ ] ) throwsException{

创建Student对象

sudentsTD=newstudent('vani ',27 );

//序列化对象

fileoutputstreamfos=new file output stream (e : (student.ser );

objectoutputstreamoos=新对象输出流;

操作系统.写入对象(STD;

oos.close (;

fos.close (;

//在反序列化之前打印数据

System.out.println ('反序列化前的值:');

std.display (;

//更改静态变量值

STD.setyear(2019;

//更改实例变量的值

STD.setname(varada );

//改变过渡变量值

STD.setage(19;

system.out.println (对象序列化……);

//反序列化对象

fileinputstreamfis=new file inputstream (e : (student.ser );

对象输入流=新对象输入流(fis;

sudentdeserializedstd=(student ) ois.readObject );

system.out.println (对象de-serialized……);

ois.close (;

fis.close (;

System.out.println ('反序列化后的值:');

描述性STD.display (;

}

}

输出结果反序列化前的值:

Name:Vani

Age:27

Year:2018

对象序列化……。

对象de-serialized……。

解除序列化后的值:

Name:Vani

Age:0

Year:2019

常量占存储单元吗,静态变量存储在数据段