¿Es obligatorio el constructor no-args predeterminado para Gson?

Gson guía de usuario declara que debemos definir el constructor predeterminado de no-args para que cualquier clase funcione correctamente con Gson. Aún más, en eljavadoc en GsonInstanceCreator clase dijo que se lanzará una excepción si intentamos deserializar la instancia del constructor predeterminado faltante de clase ydebería utilizarInstanceCreator en esos casos. Sin embargo, he intentado probar el uso de Gson con la clase que carece del constructor predeterminado y tanto la serialización como la deserialización funcionan sin problemas.

Aquí está la pieza de código para la deserialización. Una clase sin constructor no 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.
}

y una prueba:

@Test
public void deserializeMushroom() {
    assertEquals(
            new Mushroom("Fly agaric", 4.0),
            new Gson().fromJson(
                    "{name:\"Fly agaric\", diameter:4.0}", Mushroom.class));
}

que funciona bien.

Así que mi pregunta es:¿Podría realmente usar Gson sin necesidad de tener un constructor predeterminado o hay alguna circunstancia en la que no funcionará?

Respuestas a la pregunta(2)

Su respuesta a la pregunta