在 Kotlin 中创建 "on the fly" 的 class 对象可以有构造函数吗?

Can a class object created "on the fly" in Kotlin have a constructor?

我在 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 对此表示抱怨并表示:

Property ''fieldOne'' is never used

我知道我可以通过 lint 选项删除此警告,但想找到一种 "native" 方法来消除此警告。

您的 object 的使用是通过反射完成的。实际的 class 定义了一个构造函数,其参数为 myFieldOnemyFieldThree.

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

我不知道你所说的 "native way to get rid of it" 是什么意思,但是有一个注释:

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

当然,您可以创建数据 class,但在某些情况下,匿名单例 (object {}) 是更好的选择,然后您将需要此注释来告诉静态代码分析,这是需要的,而不是错误的。