一、初识transient关键字
其实这个关键字的作用很好理解,就是简单的一句话:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。
概念也很好理解,下面使用代码去验证一下:
首先我们创建一个User类:
package com.bean;
import java.io.Serializable;
public class User implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private transient int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
@Override
public String toString() {
return "User [age=" + age + ", name=" + name + ", getAge()=" + getAge()
+ ", getName()=" + getName() + ", getClass()=" + getClass()
+ ", hashCode()=" + hashCode() + ", toString()="
+ super.toString() + "]";
}
}
要运行下面这个程序,首先要创建一个bin的二进制文件,G://java_learning/template.bin
package com.main;
import java.io.*;
import org.junit.Test;
import com.bean.User;
public class test1 {
@Test
public void myTest1(){
try {
SerializeUser();
DeSerializeUser();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//序列化
private static void SerializeUser() throws FileNotFoundException,IOException,ClassNotFoundException{
User user=new User();
user.setName("Java序列号学习");
user.setAge(24);
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("G://java_learning/template.bin"));