在 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 定义了一个构造函数,其参数为 myFieldOne
到 myFieldThree
.
为了代码的完整性,您应该考虑使用 数据 class。 Kotlin 和 Java 一样是静态类型的,您应该尽可能多地利用它。下一步就是摆脱你不需要做的任何反射。
我不知道你所说的 "native way to get rid of it" 是什么意思,但是有一个注释:
val myObject = @Suppress("unused") object {
@SerializedName("fieldOne")
val fieldOne = myFieldOne
// ...
}
当然,您可以创建数据 class,但在某些情况下,匿名单例 (object {}
) 是更好的选择,然后您将需要此注释来告诉静态代码分析,这是需要的,而不是错误的。
我在 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 定义了一个构造函数,其参数为 myFieldOne
到 myFieldThree
.
为了代码的完整性,您应该考虑使用 数据 class。 Kotlin 和 Java 一样是静态类型的,您应该尽可能多地利用它。下一步就是摆脱你不需要做的任何反射。
我不知道你所说的 "native way to get rid of it" 是什么意思,但是有一个注释:
val myObject = @Suppress("unused") object {
@SerializedName("fieldOne")
val fieldOne = myFieldOne
// ...
}
当然,您可以创建数据 class,但在某些情况下,匿名单例 (object {}
) 是更好的选择,然后您将需要此注释来告诉静态代码分析,这是需要的,而不是错误的。