【发布时间】:2017-11-30 20:03:23
【问题描述】:
我在 Kotlin 中有一个继承自 Java 类的数据类,它定义了一个带有 1 个参数的构造函数,
public BaseClass(String userSessionId) {
this.userSessionId = userSessionId;
}
我的 Kotlin 类是这样定义的
class DerivedClass(
userSessionId: String,
var other: Other? = null
) : BaseClass(userSessionId) {
由于 userSessionId,我无法将其定义为数据类,Kotlin 要求它是数据类中的 val 或 var。但是,如果我这样做,Retrofit 会抛出异常,因为有 2 个名为 userSessionId 的成员。有没有办法让一个数据类从一个带有参数的构造函数继承自 Java 类?请注意,我无法更改基类。
一种可能的解决方案是定义一个虚拟 val 以避免名称冲突,但这并不理想
data class DerivedClass(
val dummy: String,
var other: Other? = null
) : BaseClass(dummy) {
【问题讨论】:
-
将
DerivedClass中的属性标记为@Transient怎么样?根据this answer,改造应该忽略它。 -
将其定义为 val 或 var 并在数据类中的字段前使用 @SerializedName("userSessionId")。这应该可以解决问题。
-
@zsmb13 瞬态工作。请创建一个答案,我会接受。