【问题标题】:Data class inheriting from Java class继承自Java类的数据类
【发布时间】: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 瞬态工作。请创建一个答案,我会接受。

标签: android kotlin


【解决方案1】:

您可以在 Java 中使用 use the transient keyword 在序列化期间忽略字段,这可以在 Kotlin 中通过使用属性上的 @Transient 注释来完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2012-02-25
    • 2015-11-16
    相关资源
    最近更新 更多