Есть ли ограничение на наличие конструкторов в классе данных? (kotlin) - PullRequest
0 голосов
/ 15 апреля 2020

Я обработал ответ, который имеет большой диапазон полей, особенно почти 7000 полей. Я использовал robopojo, чтобы создать из него класс данных. Теперь я получаю ошибки, такие как переполнение, поэтому я должен уменьшить поля. В итоге ошибка изменилась на

04-15 14: 25: 19.823 17933-17933 / com.example.cbc_appraisal D / androidruntime: java .lang.VerifyError: Отклонение класса com.example. cbc_appraisal.model.revisedresponse.vacantlot.ValrepLandimpValuationGroupingItem, так как он не прошел проверку во время компиляции (объявление 'com.example.cbc_appraisal.model.revisedresponse.vacantlot.ValrepLandimpValuationGroupingItem' появляется в /dbase_app/1 .apk: classes2.dex)

это мой фрагмент кода

@ Parcelize data class ValrepLandimpValuationGroupingItem (

@field:SerializedName("valrep_landimp_dos_cml3_total_adjustment")
val valrepLandimpDosCml3TotalAdjustment: String? = null,

@field:SerializedName("valrep_landimp_dos_cml4_contact_no")
val valrepLandimpDosCml4ContactNo: String? = null,

@field:SerializedName("valrep_landimp_dos_dsl1_source")
val valrepLandimpDosDsl1Source: String? = null,

@field:SerializedName("valrep_landimp_dos_dsl3_source")
val valrepLandimpDosDsl3Source: String? = null,

 ... imagine 800 more

Я начинаю думать, что kotlin не может обрабатывать много полей. Любые предложения по этому вопросу? Спасибо заранее !!

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Согласно этой записи в блоге :

255 параметров […] - практическое максимальное количество параметров, которое метод может иметь в JVM

и (начиная с версии 1.3) Kotlin может поддерживать это число.

JVM spe c подтверждает этот предел.

Я не уверен применяется ли этот предел непосредственно к Android, но этот вопрос предполагает, что это так. (Это также говорит о том, что попытка приблизиться к этому количеству параметров является очень сильным запахом кода…)

1 голос
/ 15 апреля 2020

Нет, нигде нет ограничений для конструкторов, если бы этот предел присутствовал, это нарушило бы концепцию перегрузки конструкторов.

Для дальнейшего понимания и синтаксиса используйте ссылку:

https://proandroiddev.com/creating-multiple-constructors-for-data-classes-in-kotlin-32ad27e58cac

Кроме того, добро пожаловать в StackOverflow.

Обновление

Для обработки большого количества полей вы можете создать группы из ваших полей в JSON форматировать и формировать древовидную структуру. Таким образом, вы можете использовать столько полей, сколько хотите, с четкой концепцией и качеством кода.

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