Kotlin 创建对象的 Arraylist

Kotllin create an Arraylist of an Object

我想创建一个 BaseObject 的数组列表,从 List< Allparkingquery> 获取数据,它具有与 BaseObject 相同的参数但是不同的 class 个名字

这是基础 BaseObject

 data class BaseObject (

    @SerializedName("queryfor") var queryfor : String,
    @SerializedName("whichitem") val whichitem : String,
    @SerializedName("Latitude") val latitude : String,
    @SerializedName("Longitude") val longitude : String,
    @SerializedName("DateCreated") val dateCreated : String,
    @SerializedName("NumberQueried") val numberQueried : String,
    @SerializedName("CurrentState") var currentState : String
)

这是@SerializedName("allparkingquery") val allparkingquery 的数组:列表,

data class Allparkingquery (

    @SerializedName("queryfor") val queryfor : String,
    @SerializedName("whichitem") val whichitem : String,
    @SerializedName("Latitude") val latitude : String,
    @SerializedName("Longitude") val longitude : String,
    @SerializedName("DateCreated") val dateCreated : String,
    @SerializedName("NumberQueried") val numberQueried : String,
    @SerializedName("CurrentState") val currentState : String
)

这里是我尝试循环 List 以将数据填充到其中的地方 列表< BaseObject >

所以挑战是 baseList.add(item) 显示错误。见下文

 var baseList: List<BaseObject> = ArrayList<BaseObject>()
            response.response_data.history[0].allparkingquery.forEachIndexed { index, item ->
                baseList.add(item)
            }

发生这种情况的原因是,尽管有相似之处,但 BaseObjectAllparkingquery 并不相关,因为 Allparkingquery 不继承自 BaseObject

你的示例中缺少拥有基础对象的理由,所以我假设 Allparkingquery 将来会有一个字段将其与 BaseObject 区分开来,所以继续吧您需要做的是将 BaseObject 更改为抽象 class 或接口,并让 Allparkingquery 继承它。

abstract class BaseObject {
    @SerializedName("queryfor") abstract var queryfor : String,
    @SerializedName("whichitem") abstract val whichitem : String,
    @SerializedName("Latitude") abstract val latitude : String,
    @SerializedName("Longitude") abstract val longitude : String,
    @SerializedName("DateCreated") abstract val dateCreated : String,
    @SerializedName("NumberQueried") abstract val numberQueried : String,
    @SerializedName("CurrentState") abstract var currentState : String
}

class Allparkingquery(
    override var queryfor : String,
    override val whichitem : String,
    override val latitude : String,
    override val longitude : String,
    override val dateCreated : String,
    override val numberQueried : String,
    override var currentState : String
) : BaseObject()