Comment gérer la désérialisation avec le polymorphisme?

J'ai une classe comme:

public class Barn {
    String type;
    Animal animal;
}

public class Horse extends Animal {
}

public class Cow extends Animal {
}

et je tiens à sérialiser une liste d'entre eux:

List<Barn> barns = new ArrayList<Barn>();

Barn barn1 = new Barn();
barn1.setType("horse");
barn1.setAnimal(new Horse());
barns.add(barn1);

Barn barn2 = new Barn();
barn2.setType("cow");
barn2.setAnimal(new Cow());
barns.add(barn2);

...

Group<Barn> barns = gson.fromJson(serialized);   

Quand je sérialiser, saisissez les informations seront perdues pour l'Animal attribut. Est-il une manière que je pourrais installer un analyseur auditeur en quelque sorte pour que je puisse fournir la bonne classe pour désérialiser que lorsque chaque élément de la liste est rencontrés? C'était l'idée derrière manuellement la fourniture d'une chaîne de caractères décrivant le type de classe.

Grâce

InformationsquelleAutor user1219278 | 2013-04-01