Является ли конструктор по умолчанию без аргументов обязательным для Gson?

Gson руководство пользователя заявляет, что мы должны определить конструктор по умолчанию без аргументов для любого класса для правильной работы с Gson. Еще больше, вJavadoc на ГсонаInstanceCreator класс сказал, что будет выдано исключение, если мы попытаемся десериализовать экземпляр класса, в котором отсутствует конструктор по умолчанию, и мыдолжен использованиеInstanceCreator в таких случаях. Тем не менее, я попытался протестировать использование Gson с классом, в котором отсутствует конструктор по умолчанию, и сериализация и десериализация работают без проблем.

Вот кусок кода для десериализации. Класс без конструктора без аргументов:

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

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

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

и тест:

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

который отлично работает

Итак, мой вопрос:Могу ли я на самом деле использовать Gson без необходимости иметь конструктор по умолчанию или есть обстоятельства, когда он не будет работать?

Ответы на вопрос(2)

Ваш ответ на вопрос