Когда SDK базы данных Firebase Realtime десериализует объекты, поступающие из базы данных, требуется, чтобы все используемые объекты имели общедоступный no-argument constructor
, поэтому он может использовать его для создания экземпляра объекта. Поля в объектах устанавливаются с помощью общедоступных методов установки или прямого доступа к открытым членам.
JavaBeans требует наличия конструктора без аргументов , но когда в классе Java вообще нет конструкторов, по умолчанию компилятор добавляет в него конструктор по умолчанию без аргументов. В тот момент, когда вы определяете какой-либо конструктор в классе (с одним или несколькими аргументами), конструктор по умолчанию без аргументов исчезает, и его больше не нужно определять.
В вашем коде ваш класс Hero
определяет такой конструктор, который содержит аргументы:
public Hero(String name, String weapon, String description, String price, String discount, String id) {}
Пока этот конструктор присутствует, вам не нужно определять конструктор без аргументов.
Также обратите внимание, что сеттеры и геттеры также не требуются. Установщики всегда являются необязательными, потому что если для свойства JSON нет установщика, клиент Firebase установит значение непосредственно в поле. Конструктор с аргументами также не требуется. Оба идиоматичны, и есть хорошие случаи, когда занятия проводятся без них. Если вы сделаете поля общедоступными, получатели также будут необязательными.