Android轮子哥

Results 363 comments of Android轮子哥

@skywolfwen 如果不用框架进行解析,你在 data class 定义的默认值是否也能生效?

> > @skywolfwen 如果不用框架进行解析,你在 data class 定义的默认值是否也能生效? > > > > 那不行,默认的gson不支持这个功能 我的意思是不用解析框架,直接 new 一个 data class 对象默认值是否能生效?

> @getActivity 我发现好像是因为有些属性有默认值,有些属性没有默认值才有这个问题,如果属性都有默认值那解析也是没问题的 没听懂你这句话是什么意思?

我测试发现是没有问题的,data class 默认值都是生效的。

你这种写法本身存在问题,userId 是不可变的常量,类型为 String 的写法代表值不能为空,但是你在 data class 类中字段上面没有给它赋值。

我最近针对这个问题进行了反复测试和验证,最终得出以下结论: 1. 这个问题出现 Gradle Android 插件(高版本名称为 `com.android.application` 低版本名称为 `com.android.tools.build:gradle`)在 `8.6.0` 及以上的版本会出现,之前的版本不会出现,例如 `8.5.0` 版本不会有该问题,另外这个问题和纯 Gradle 版本没有关系,只和 Gradle Android 插件有关系。 2. 问题出现的原因是在于,这个 Gradle Android 高版本的插件会去除 kotlin data class 类字节码中的 Metadata 信息,间接导致 `org.jetbrains.kotlin:kotlin-reflect`...

关于这种没有复现步骤的问题,我无法判定到底是谁的问题(框架的问题,系统的问题,厂商的问题,个人写法的问题),你需要确定好清楚问题复现步骤或者问题的具体原因,否则你只能自行处理。

你的复现步骤比较复杂,不要光用文字来描述,不然很可能出现的一种情况就是我按照你说的结果无法复现,这种情况我遇到过很多次,正确的做法是直接写一个 Demo 工程上传到 Github issue,我直接跑 Demo 工程来复现。