Kotlin 在数据类中使用构造函数有限制吗?(科特林)

Kotlin 在数据类中使用构造函数有限制吗?(科特林),kotlin,Kotlin,我一直在处理一个涉及大量字段的响应,尤其是近7000个字段。我使用robopojo从中生成一个数据类。现在我得到的错误,如溢出,所以我必须减少字段。最终错误变成了这样 04-15 14:25:19.823 17933-17933/com.example.cbcúu evaluation D/androidruntime:java.lang.VerifyError:拒绝类com.example.cbcúevaluation.model.revisedresponse.vacantlot.Valre

我一直在处理一个涉及大量字段的响应,尤其是近7000个字段。我使用robopojo从中生成一个数据类。现在我得到的错误,如溢出,所以我必须减少字段。最终错误变成了这样

04-15 14:25:19.823 17933-17933/com.example.cbcúu evaluation D/androidruntime:java.lang.VerifyError:拒绝类com.example.cbcúevaluation.model.revisedresponse.vacantlot.ValrepLandimpValuationGroupingItem,因为它未能通过编译时验证(声明'com.example.cbc_evaluation.model.revisedresponse.vacantlot.ValrepLandimpValuationGroupingItem'出现在/data/app/com.example.cbc_evaluation-1/base.apk:classes2.dex中)

这是我的密码剪

@包裹 数据类ValrepLandimpValuationGroupingItem(


我开始认为kotlin不能处理很多字段。关于这个问题有什么建议吗?提前谢谢!!

不,构造函数在任何地方都没有限制,如果存在限制,那么构造函数重载的概念就没有了

请参阅此以进一步理解和语法:

另外,欢迎来到StackOverflow

更新


要处理大量字段,您可以将字段分组为JSON格式并形成树状结构。这样,您可以使用任意数量的字段,并且概念清晰,代码质量高。

不,构造函数在任何地方都没有限制,如果存在限制,则会消除构造函数重载的概念

请参阅此以进一步理解和语法:

另外,欢迎来到StackOverflow

更新

要处理大量字段,您可以将字段分组为JSON格式,并形成树状结构。这样,您可以使用任意数量的字段,概念清晰,代码质量高。

根据:

255个参数[…]是一个方法在JVM上可以拥有的实际最大参数数

而且(从v1.3开始)Kotlin可以支持这个数字

政府确认了这一限制

我不确定这一限制是否也直接适用于Android,但我认为确实如此。(它还表明,试图拥有接近该数量的参数是一种非常强烈的代码气味…

根据:

255个参数[…]是一个方法在JVM上可以拥有的实际最大参数数

而且(从v1.3开始)Kotlin可以支持这个数字

政府确认了这一限制


我不确定这一限制是否也直接适用于Android,但我认为确实如此。(它还表明,试图在任何地方拥有接近该数量的参数都是一种非常强烈的代码气味…)

Hello sir@Saswata!我刚刚阅读了您发送到这里的文档,我试图添加注释JVM重载,我得到了这个错误,后端内部错误:代码生成过程中异常。顺便说一句,谢谢您回答我的问题。我已经寻找了一个月的答案,但仍然找不到准确的答案。也许我的问题是incor但是,我在我的问题上添加了一个代码剪贴,先生。您好,由于之前缺少代码,我已经向您提供了构造函数的答案。由于您处理的字段太多,请参考@gidds answer。您还可以使用对象对字段进行分组,然后使用它们(参考:更新的答案)。我没有,先生。:DHello先生!我所做的是我必须将对象分成2个,并创建2个具有不同响应的api类,以便获得整个响应。这是我处理具有大响应的调用的最佳解决方案是的,正是@amourehollo Sir@Saswata!我刚刚阅读了您发送到这里的文档,并尝试添加注释关于JVM重载,我得到了这个错误,后端内部错误:代码生成过程中异常。顺便说一句,谢谢你回答我的问题。我已经寻找了一个月的答案,但仍然找不到准确的答案。可能我的问题不正确。但是,我在我的问题上添加了一个代码剪贴,先生。您好,因为以前我没有代码,所以我有为您提供了构造函数的答案。由于您处理的字段太多,请参阅@gidds answer。您还可以使用对象对字段进行分组,然后使用它们(参考:更新的答案)。我没有,先生。:DHello先生!我所做的是我必须将对象分成2个,并创建2个具有不同响应的api类,这样我才能得到整个响应。这是我处理具有大响应的调用所做的最佳解决方案是的,正是@Amoure1。您需要
@Parcelize
?这将为如此大的响应添加大量生成的代码ass,它可能太大,无法放入包裹中。最好将其作为json保存到文件中,稍后再进行解析。2.您使用哪个json解析器从json数据构造此类?使用
@JsonClass(generateApter=true)
可能很适合,因为它不使用任何反射。先生,我使用@parcelize是因为我将它传递给了另一个意图。如果这就是我遇到此错误的原因,您能建议我另一种方法将一个大类传递给另一个活动吗谢谢!因为您已经在转换json,您可以将它另存为json文件中的字符串。在意图中,然后只传递文件的路径,在新活动中,再次读取该文件并构造此对象。如果您从网络请求中获取json,则最简单的方法是直接将响应保存到文件中。您好,先生,我已经删除了@parcelize并计划保存在json文件中,但是,我仍然需要正在输入被拒绝的类,因为它未能通过编译时验证。在测试期间,我尝试将800个字段减少到700个,结果成功了。我尝试添加更多字段,当我达到750个时,我再次遇到了相同的错误,这就是为什么我认为kotlin不能满足拥有太多字段的要求。这是我一直经历的行为先生1.您需要什么<
@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