package SerializacaoDes_serializacao;
public class Collar {
private int collarSize;
public Collar(int size) {
collarSize = size;
}
public int getCollarSize() {
return collarSize;
}
}
package SerializacaoDes_serializacao;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.lang.Exception;
public class Dog implements Serializable {
transient private Collar theCollar; // Marcado como transient por que Collar nao é Serializable
private int dogSize;
public Dog(Collar collar, int size) {
theCollar = collar;
dogSize = size;
}
public Collar getCollar() {
return theCollar;
}
public int getDogSize() {
return dogSize;
}
private void writeObject(ObjectOutputStream os) {
try {
os.defaultWriteObject();
os.writeInt(theCollar.getCollarSize());
} catch(Exception exception) {
exception.printStackTrace();
}
}
private void readObject(ObjectInputStream oi) {
try {
oi.defaultReadObject();
theCollar = new Collar(oi.readInt());
} catch(Exception exception) {
exception.printStackTrace();
}
}
}
package SerializacaoDes_serializacao;
import java.lang.Exception;
import java.io.*;
public class TesteDogSerializable {
public static void main(String[] args) {
Collar c1 = new Collar(8);
Dog dog1 = new Dog(c1, 2);
try {
FileOutputStream fos = new FileOutputStream("Teste.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(dog1);
oos.flush();
oos.close();
} catch(Exception exception) {
exception.printStackTrace();
}
Dog dog2; // Declarei um novo dog2 para jogar os valores serializados de dog1 para dog2
try {
FileInputStream fis = new FileInputStream("Teste.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
dog2 = (Dog) ois.readObject(); // Minha dúvida esta aqui. Porque os valores de dog1 nao foram para dog2 ?
ois.close();
} catch(Exception exception) {
exception.printStackTrace();
}
System.out.println("dog1\ntheCollar: " + dog1.getCollar().getCollarSize() +
"\ndogSize: " + dog1.getDogSize());
System.out.println("\n----------------------\n");
System.out.println("dog2\ntheCollar: " + dog2.getCollar().getCollarSize() +
"\ndogSize: " + dog2.getDogSize()); // Erro em dog2
}
}