Дублирование парсинга Kotlin Firebase - PullRequest
0 голосов
/ 13 сентября 2018

Итак, у меня есть объект Game, в котором есть блок инициализации, в котором я настраиваю объект и загружаю его в Firebase Firestore. Затем, когда я слушаю изменения в этом объекте, мне нужно преобразовать DocumentSnapshot в объект Game.

game = snapshot.toObject(Game::class.java)

Довольно просто. Проблема в том, что это вызывает блок init моего класса Game и загружает другой игровой объект. Есть ли способ избежать вызова блока инициализации при этом? Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Когда вы используете автоматическое сопоставление полей, как это, соглашение состоит в том, что вы должны использовать определение класса, которое содержит только поля, которые вы хотите отобразить, и ничего больше. Объекты, которые имеют только методы получения и установки для свойств, называются JavaBeans, и их единственная цель - хранить данные. Эти объекты должны определять конструктор по умолчанию без аргументов.

Если у вас есть дополнительная логика, которая работает с вашим игровым объектом, она должна перейти в другой класс. Лучше проектировать ваши данные отдельно от логики, которая работает с данными (как вы обнаружили).

0 голосов
/ 13 сентября 2018

Переместите код инициализации в конструктор, который вы можете вызывать, когда создаете экземпляр своего класса Game и хотите, чтобы он загружал игровой объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...