有什么方法可以在Kotlin界面中使用gson SerializedName批注吗?
interface User {
@SerializedName("user_id")
val userId: String?
}
data class MainUser(override val userId: String? = null) : User
我知道注释可以在子类中,但这不是我想要的,因为有很多扩展该接口的类。
注释1: 使用abstract或open类作为数据类的父级可以解决此问题,但是新问题将是父级中被覆盖的equals()方法永远不会被调用(mainUser1 == mainUser2永远不会在abstract或open中检查equls()方法类User)
答案 0 :(得分:3)
我认为,接口不是拥有属性(或状态)的好地方。接口非常适合建立行为(功能)。我宁愿建议您将抽象类用于您的目的,并且它将按预期工作。
答案 1 :(得分:0)
您可以使用@get
use-site target来注释属性获取器:
interface User {
@get:SerializedName("user_id")
val userId: String?
}
data class MainUser(override val userId: String? = null) : User