Nao entendi bem pq é obrigatório seu uso no processo call-back,
testei e vi se nao usá-lo os atributos do objeto serializados serão reniciliazados alguém sabe pq? :lol:
defaultWriteObject() ou defaultReadObject()
4 Respostas
poe seu codigo ai!! vc usa esses metodos padrao quaando deseja q a serialização aconteça normalmente…
beleza la vai!!
class Dados{
double matricola;
Dados(double x){
matricola=x;
}
}
class Universitario implements Serializable{
transient Dados d;
String nome;
Universitario(String x,Dados y){
nome=x;
d=y;
}
private void writeObject(ObjectOutputStream ob) throws Exception{
ob.defaultWriteObject();//se nao usalos nao serializa o Objeto Universitario pq??
d.matricola=654321.0;
ob.writeDouble(d.matricola);
}
private void readObject(ObjectInputStream ob) throws Exception{
ob.defaultReadObject();//
d=new Dados(ob.readDouble());
}
void mostrar(){
System.out.println(" matricola "+nome+ " seria "+d.matricola);
}
}
public class DeSerelizacao {
public static void main(String...a) throws Exception{
Dados d=new Dados(12345.566);
Universitario u=new Universitario("fabio",d);
ObjectOutputStream og=new ObjectOutputStream(new FileOutputStream("S.txt"));
og.writeObject(u);
ObjectInputStream og2=new ObjectInputStream(new FileInputStream("S.txt"));
Universitario b2=(Universitario) og2.readObject();
b2.mostrar();
}
}
se eu nao usar os defaultwriteObject e defaultreadObject o construtor sera chamado para reinicializar os atributos de universitário,mas pq LPJava ??
Obrigado pela atenção!!Se eu passar no exame scjp1.5,um dia que tu vier para Fortaleza vou ter o prazer em te mostrar as praias daqui fera!! 
pq a class Dados ela nao implements Serializable entao vc deve usar os metodos padrao para poder serializar universitario observe que no construtor de Universitario vc tem um objeto de Dados se nao fizer realmente vc nao vai conseguir serializar.
Bom olha esse exemplo é grande porem explica tudo que vc precisa saber o por que de usar esses metodos… o exemplo é bem semelhante ao seu veja:
//class dog
class Dog implements Serializable{
private transient Collar theCollar;//variavel de instancia
private int dogSize;
//construtor que recebe objeto e um int
public Dog(Collar c,int s){
theCollar = c;
dogSize = s;
}
public Collar getCollar(){return theCollar;}
//implementando o metodo
private void writeObject(ObjectOutputStream oo){
try{
oo.defaultWriteObject();//aqui digo realize o processo normal de serializacao
//aqui é o tamanho do collar
oo.writeInt(theCollar.getCollarSize());
}catch(Exception e){e.printStackTrace();}
}
//implementando o metodo read em relacao ao objeto dog
private void readObject(ObjectInputStream oi){
try{
oi.defaultReadObject();//cuida da serialização normal
//aqui é o tamanho do colar serializado
theCollar = new Collar(oi.readInt());
}catch(Exception e){e.printStackTrace();}
}}
//class collar
class Collar{
private int collarSize;
//construtor que recebe inteiro
public Collar(int size){collarSize = size;}
public int getCollarSize(){
return collarSize;}
}
/*esse processo manual de serialização é quando temos alguma classe nao serializada
entao é necessario immplementar os metodo writeObject e reaObject,
isso acontece pq nem tudo pode ser serilizavel a class object nao eh por exemplo
lembre que a implementacao deve ser na classe que eh serializada ou seja dog neste caso
- os metodos deve ser PRIVADOS - private caso coloque como publico a exceção permanece
*/
P.S: a respeito de fortaleza vou cobrar tenho vontade de conhecer e muito! eheh 
tranquillo qd vier mesmo, pode mandar um email avisando terei grande prazer! e obrigadao pelo exemplo!!!