import java.io.Serializable;
/**
* 创建一个User类
*/
public class User implements Serializable {
//手动生成序列化版本号
private static final long SerialVersionUID=2L;
private int no;
// transient关键字表示游离的,不参与序列化。
private transient String name;
private int no1;
public User() {
}
public User(int no, String name) {
this.no = no;
this.name = name;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{"+
"no="+no+
",name="+name+
"}";
}
}
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
/*
一次序列化多个对象呢?
可以,可以将对象放到集合当中,序列化集合。
提示:
参与序列化的ArrayList集合以及集合中的元素User都需要实现 java.io.Serializable接口。
*/
public class ObjectOutputStreamTest02 {
public static void main(String[] args) {
List<User> userList=new ArrayList<>();
userList.add(new User(1,"张三"));
userList.add(new User(2,"李四"));
ObjectOutputStream oos=null;
try {
oos=new ObjectOutputStream(new FileOutputStream("user"));
// 序列化一个集合,这个集合对象中放了很多其他对象。
oos.writeObject(userList);
oos.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(oos!=null){
try {
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.List;
/**
* 反序列化集合
*/
public class ObjectInputStreamTest02 {
public static void main(String[] args) {
ObjectInputStream ois=null;
try {
ois=new ObjectInputStream(new FileInputStream("user"));
List<User> userList=(List<User>) ois.readObject();
for (User user:userList) {
System.out.println(user);
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally{
if(ois!=null){
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
反序列化结果:由于name属性定义为transient游离的,不参与序列化 因此值为null