为了账号安全,请及时绑定邮箱和手机立即绑定

多transient属性的反序列化识别问题

请问下,自己反序列化的时候,写的是 s.readInt(); 那如果有多个transient修饰的int属性,那么怎么区别呢

正在回答

1 回答

写入顺序和读取顺序一致即可,见下面的代码,在老师代码的基础上加了一个age1属性,用transient修饰

package com.imooc.io;


import java.io.Serializable;


public class Student implements Serializable{

private String stuno;

private String stuname;

//该元素不会进行jvm默认的序列化,也可以自己完成这个元素的序列化

private transient int stuage;  

private transient int age1;

public Student(String stuno, String stuname, int stuage,int age1) {

super();

this.stuno = stuno;

this.stuname = stuname;

this.stuage = stuage;

this.age1=age1;

}


public String getStuno() {

return stuno;

}

public int getAge1() {

return age1;

}


public void setAge1(int age1) {

this.age1 = age1;

}


public void setStuno(String stuno) {

this.stuno = stuno;

}

public String getStuname() {

return stuname;

}

public void setStuname(String stuname) {

this.stuname = stuname;

}

public int getStuage() {

return stuage;

}

public void setStuage(int stuage) {

this.stuage = stuage;

}

@Override

public String toString() {

return "Student [stuno=" + stuno + ", stuname=" + stuname + ", stuage="

+ stuage + ",age1="+age1+"]";

}

private void writeObject(java.io.ObjectOutputStream s)

       throws java.io.IOException{

s.defaultWriteObject();//把jvm能默认序列化的元素进行序列化操作

s.writeInt(stuage);//自己完成stuage的序列化

s.writeInt(age1);

}

private void readObject(java.io.ObjectInputStream s)

       throws java.io.IOException, ClassNotFoundException{

 s.defaultReadObject();//把jvm能默认反序列化的元素进行反序列化操作

 this.stuage = s.readInt();//自己完成stuage的反序列化操作

 this.age1=s.readInt();

}

}


2 回复 有任何疑惑可以回复我~
#1

sdfsdf_0001 提问者

谢之,
2014-11-19 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
文件传输基础——Java IO流
  • 参与学习       133762    人
  • 解答问题       1030    个

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

进入课程

多transient属性的反序列化识别问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信