在Kotlin中“即时”创建的类对象是否有构造函数?

我在Kotlin中创建了一个这样的对象,并将其传递给我的方法:

val myObject = object { @SerializedName("fieldOne") val fieldOne = myFieldOne @SerializedName("fieldTwo") val fieldTwo = myFieldTwo @SerializedName("fieldThree") val fieldThree = myFieldThree } dbManager.save(myObject) // this works fine 

然而,Android Studio抱怨,并说:

属性“fieldOne”从不使用

我知道我可以通过lint选项删除此警告,但希望找到一种“本机”方式来摆脱此警告。

你的object的用法是用反射来完成的。 实际的类有一个构造函数定义了参数myFieldOne myFieldThree

为了您的代码的完整性,您应该考虑使用数据类 。 像Java这样的Kotlin是静态类型的,你应该尽可能地利用它。 下一步就是摆脱你不需要做的任何反思。

我不知道你的意思是“本土的方式来摆脱它”,但有一个注释:

 val myObject = @Suppress("unused") object { @SerializedName("fieldOne") val fieldOne = myFieldOne // ... } 

当然,你可以创建一个数据类,但是会有一些使用情况,匿名单例( object {} )是更好的选择,然后你需要这个注释来告诉静态代码分析这是需要的,而不是错误的。