Questao de Serialização. Duvida na resposta

Galera

A questão é essa ai abaixo: é a questao 102 do testkiller.

[code]public class Serialization implements java.io.Serializable{

private int x;

public int getX() {
	return x;
}

public Serialization(int x){
	this.x = x;
}

private void writeObject(ObjectOutputStream s)throws IOException {
	// insert code here
}

}
[/code]

Which code fragment, inserted at [insert code here], will allow Serialization objects to be correctly serialized and deserialized ?
a. s.writeInt(x);
b. s.serialize(x);
c. s.writeObject(x);
d. s.defaultWriteObject();

Eu acho q tanto a A quanto a D estão correta. Porém a resposta dada pela apostila é a D ?

Algum motivo em especial para q a alternativa A está errada ?

Fiz o codigo e ambas as linhas COMPILARAM. Nao tentei executar.

A a) está incorreta porque ao se serializar um objeto, guardam-se não somente os dados (ou seja, no seu caso, int x) mas também um descritor da classe à qual pertence o objeto serializado. Você teria de usar defaultWriteObject no mínimo, a menos que você use um formato completamente diferente e proprietário de serialização (e nesse caso você deveria implementar Externalizable.)

obrigado,

entao poderia ser a s.writeObject tambem ?

Não, porque você vai acabar tendo uma recursão infinita.

Entendi … obrigado cara !