Externalizableインタフェースによるオブジェクトのカスタムシーケンス化
SerializedUser.java
import java.io.Externalizable;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
/**
* Externalizable
* @author HaoWang
*/
public class SerializedUser implements Externalizable {
private String name;
private int age;
private String email;
public SerializedUser() {
}
public SerializedUser(String name, int age, String email) {
this.name = name;
this.age = age;
this.email = email;
}
public int getAge() {
return age;
}
public String getEmail() {
return email;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public void setEmail(String email) {
this.email = email;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "SerializedUser{" + "name=" + name + "age=" + age + "email=" + email + '}';
}
public void writeExternal(ObjectOutput out) throws IOException {
out.writeUTF(this.getName());
out.writeUTF("\t");
out.writeInt(this.getAge());
out.writeUTF("\t");
out.writeUTF(this.getEmail());
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
this.setName(in.readUTF());
in.readUTF();
this.setAge(in.readInt());
in.readUTF();
this.setEmail(in.readUTF());
}
public static void main(String[] args) throws FileNotFoundException,IOException,ClassNotFoundException {
FileOutputStream fos = new FileOutputStream("user.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
SerializedUser user = new SerializedUser("wanghao", 22, "[email protected]");
oos.writeObject(user);
oos.close();
fos.close();
System.out.println(user.getName()+" ");
FileInputStream fis = new FileInputStream("user.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
user = (SerializedUser)ois.readObject();
ois.close();
fis.close();
System.out.println(" :"+user.getName());
}
}