Serialização X Interfaces X Classes Anônimas

1 resposta
Rafael.Simonelli

Olá pessoal!

Estou com uma questão muito intrigante envolvendo serialização, interfaces e classes anônimas.

Na minha aplicação tenho N interfaces com relacionamento entre elas, cujas implementações também enxergam interfaces. Para criar essa galera eu disponho de um conjunto de fabricas. Em alguns casos elas retornavam classes anônimas, por conveniência, que foram utilizadas para não distribuir implementações Null Object, por exemplo, sem necessidade de implementá-las e espalhá-las pela app.

Essas fábricas estavam cheias de static e, por uma necessidade de polimorfismo, troquei por métodos comuns. Alguns testes unitários falharam reclamando que não era possível serializar o objeto pois a fábrica (?!) não era serializável. Após muito quebrar a cabeça, resolvi substituindo o anonimato por implementações reais, mas ainda não consegui entender porque um funciona e outro não.

Alguém sabe porque a serialização funciona quando a classe anônima provém de um método static mas não de um método de instância?!

O quadro todo era muito complicado, então montei um pequeno aplicativo para demonstrar meu problema com um modelo simplificado do que tenho na minha app. Quem puder me ajudar, peço que analise esse fonte.

Obrigado!!!

1 Resposta

rmendes08

A diferença entre uma classe aninhada estática e uma classe aninhada de instância é que os objetos da classe interna dependem de um objeto da classe envolvente. Sendo assim, para que você serialize um objeto da classe interna você vai precisar serializar o objeto envolvente também.

Talvez, a melhor solução seja declarar a classe que você quer serializar fora da fábrica.

Criado 5 de outubro de 2011
Ultima resposta 5 de out. de 2011
Respostas 1
Participantes 2