首先需要说明的是,目前的传输和储存多以json为主,连xml应用看上去都不那么广泛了。
于是,我们需要对自己写的类进行序列化的操作机会变少了。
但,若我们对序列化有了了解,总是对于理解一些问题有帮助的。(其中序列化三个字可以换成任何技术)
今天要说的就是下面这个东西
static final long serialVersionUID = -3387516993124229948L;
序列化:把对象转化为字节序列的过程。
反过来说就是反序列化。
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class SVTest {
public static void main(String[] args) throws Exception {
// 序列化User对象
SerializeUser();
// 反序列User对象
User user = DeserializeUser();
System.out.println(user);
}
/**
* 序列化User对象
*/
private static void SerializeUser() throws FileNotFoundException,
IOException {
// 创建一个小明
User user = new User(1,"小明");
// ObjectOutputStream 对象输出流
ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream(
new File("D:/User.txt")));
// 序列化输出User对象
oo.writeObject(user);
System.out.println("序列化成功!");
oo.close();
}
/**
* 反序列User对象
*/
private static User DeserializeUser() throws Exception, IOException {
// ObjectInputStream 对象读取流
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
new File("D:/User.txt")));
// 反序列化User对象
User user = (User) ois.readObject();
System.out.println("反序列化成功!");
ois.close();
return user;
}
}
package test;
public class User {
// ID
private int id;
// 姓名
private String name;
User(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package test;
import java.io.Serializable;
public class User implements Serializable {
// ID
private int id;
// 姓名
private String name;
User(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = -6367006705587584157L;
package test;
import java.io.Serializable;
public class User implements Serializable {
// ID
private int id;
// 姓名
private String name;
// 新增加的年龄属性
private String age;
User(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}