Это обычная проблема при использовании Gson с Kotlin - и ошибки времени выполнения здесь возникают слишком поздно, что может сделать вашу программу нестабильной и без * cra sh дружественной. Например, напишите:
val name: String = p.name
Бум! Cra sh.
Gson просто, согласно супер хакерской реализации , выделяет память для класса без вызова конструктора, а затем заполняет поля значениями, присутствующими в JSON, используя отражение.
Это позволяет хранить null
в ненулевых свойствах Kotlin, что может вызвать NPE во время выполнения. Вы можете предоставить пользовательский TypeAdapter для отключения отражения для вашего класса.