首页 > 解决方案 > 对以下行感到困惑 @field:[Expose SerializedName("id")]

问题描述

我有以下数据类将从 API 检索数据:

data class Users(
        @field:[Expose SerializedName("id")]
        val id: Int)

我只是想知道是什么@field:意思。

通常,我总是这样做:

data class Users(
        @Expose
        @SerializedName("id")
        val id: Int)

我理解expose和serializedName的含义。

只是几个问题:

标签: kotlin

解决方案


val id您的示例中,一次性声明了几件不同的事情:

  • 构造函数参数。

  • 类的属性,实现为 getter 方法。

  • 属性的支持字段。

那么注释适用于哪些?它默认为参数,这就是您的第二个示例所做的。

如果您希望它改为应用于该字段,就像在您的第一个示例中一样,您可以使用field:目标。

(它通常适用于单个注释,但也可以应用于它们的数组,如本例所示。)

有关更多详细信息,请参阅 jonrsharpe 提供的链接:https ://kotlinlang.org/docs/reference/annotations.html#annotation-use-site-targets

, field:, property:, file:&c 目标仅用于注释。(field也是 getter/setter 定义中的关键字。)


推荐阅读