O construtor no-args padrão é obrigatório para o Gson?
Guia do usuário do Gson afirma que devemos definir o construtor no-args padrão para qualquer classe funcionar corretamente com o Gson. Ainda mais, nojavadoc no Gson'sInstanceCreator
classe disse que a exceção será lançada se tentarmos desserializar a instância de classe ausente construtor padrão e nósdevemos usarInstanceCreator
em tais casos. No entanto, tentei usar o Gson com a classe sem o construtor padrão e tanto a serialização quanto a desserialização funcionam sem nenhum problema.
Aqui está o pedaço de código para deserializaiton. Uma classe sem construtor não-args:
public class Mushroom {
private String name;
private double diameter;
public Mushroom(String name, double diameter) {
this.name = name;
this.diameter = diameter;
}
//equals(), hashCode(), etc.
}
e um teste:
@Test
public void deserializeMushroom() {
assertEquals(
new Mushroom("Fly agaric", 4.0),
new Gson().fromJson(
"{name:\"Fly agaric\", diameter:4.0}", Mushroom.class));
}
que funciona bem.
Então minha pergunta é:Eu poderia realmente usar Gson sem necessidade de ter construtor padrão ou há alguma circunstância quando não vai funcionar?