将MutableList <any>转换为MutableList <object>

时间:2018-11-28 22:40:29

标签: kotlin mapper

实际上我有这个数据类,其中data是mutableList,

data class DataTable (
    var total: Long = 0,

    @JsonProperty("data")
    var data: MutableList<Any>? = null )

我的想法是,当数据到达时,我可以将其映射到一个非常重要的实体,并尝试做到这一点

 val summaryOrder2= dataTable.data as  MutableList<SummaryOrder>

2 个答案:

答案 0 :(得分:0)

投射列表有什么问题?

您可能能够实现的另一种方法是过滤实例

src/jniLibs/<ANDROID_ABI>/

答案 1 :(得分:0)

您显示的是演员表...您可能想要的是mapfilterIsInstance

为什么在这里强制转换一个坏主意?由于泛型类型信息在运行时被删除...您甚至可以执行mutableListOf<Apple>() as List<Orange>,并且可能在运行时会感到震惊;-)(注意:因此,此类演员表也称为“未经检查的演员表”)

为什么使用mapfilter如果需要将data列表的内容转换为那些对象,请使用map。 。使用filter(或filterIsInstance)过滤掉所有与您的条件/谓词匹配的条目。

您可能要查找参考的文档。

因此,可能的解决方案得到了证明:

data?.filterIsInstance<SummaryOrder>()

data?.filterIsInstance<SomeTransformable>()
    ?.map { it.toSummaryOrder() /* or whatever makes those instances a SummaryOrder */ }

更多建议:

  • 尝试省略可为空的列表类型(拥有一个空列表或非空列表是否足够?)
  • 尝试省略Any作为列表类型;否则,您需要使用filterIsInstance进行此操作