Ist der standardmäßige Konstruktor no-args für Gson obligatorisch?

Gson Benutzerhandbuch gibt an, dass wir den Standard-Konstruktor no-args für jede Klasse definieren sollten, damit sie ordnungsgemäß mit Gson zusammenarbeitet. Noch mehr, in derjavadoc auf GsonInstanceCreator Klasse sagte, dass eine Ausnahme ausgelöst wird, wenn wir versuchen, die Instanz der Klasse zu deserialisieren, die den Standardkonstruktor fehlt, und wirsollte benutzenInstanceCreator in solchen Fällen. Ich habe jedoch versucht, Gson mit einer Klasse ohne Standardkonstruktor zu testen, und sowohl die Serialisierung als auch die Deserialisierung funktionieren problemlos.

Hier ist der Code für die Deserialisierung. Eine Klasse ohne Nicht-Args-Konstruktor:

public class Mushroom {
    private String name;
    private double diameter;

    public Mushroom(String name, double diameter) {
        this.name = name;
        this.diameter = diameter;
    }

    //equals(), hashCode(), etc.
}

und ein Test:

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

was gut funktioniert.

Meine Frage lautet also:Könnte ich Gson tatsächlich verwenden, ohne dass ein Standardkonstruktor erforderlich ist, oder gibt es Umstände, unter denen es nicht funktioniert?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage