【问题标题】:Moshi - Not enough information to infer type variable TMoshi - 没有足够的信息来推断类型变量 T
【发布时间】:2022-01-30 19:41:39
【问题描述】:

我有一个混合了 Java 和 Kotlin 的应用程序。 在 Kotlin 代码中,我使用 Moshi 在 Room 数据库表的转换器中将对象转换为 Json。

我有一种情况很好,但另一种情况却产生了错误:

Not enough information to infer type variable T

这是我的代码的样子:

        val type: Type = Types.newParameterizedType(
        MutableMap::class.java,
        LayerTwoConn::class.java,
        TWeFiState::class.java,
        WfMeasureFileMgr::class.java,
        Traffic::class.java,
        ThroughputCalculator::class.java,
        CellSubTechThroughput::class.java,
        LongValuesAverageCalculator::class.java,
        LayerTwoConn.SenselessTraffic::class.java
    )

    val json = Moshi.Builder().build().adapter(type).toJson(layerTwoConn)

我已经包含了对象中使用的所有类。 我错过了什么?

这个案例完美运行:

        val type: Type = Types.newParameterizedType(
        MutableList::class.java,
        CnrScan::class.java,
    )
    val jsonAdapter: JsonAdapter<List<CnrScan>> = Moshi.Builder().build().adapter(type)

    val json = jsonAdapter.toJson(list)

在这个对象中,所有内部使用的类都是标准的Java类,不是我自己的。

我错过了一些简单的事情吗?

我不知道这是否重要,但 LayerTwoConn 类的构造函数是私有的。

【问题讨论】:

    标签: android kotlin moshi


    【解决方案1】:

    我认为您正在尝试将太多类转换为一种类型,请尝试转换 MutableMap 类和 LayerTwoConn 类。 请注意 Room 使用 SQL 架构,因此请尝试预测您希望表包含的内容

    【讨论】:

    • 我不能只做一个子集,因为这些类有很深的结构
    • 为什么不构建简单的表并使用内连接来桥接数据?
    • SQL 表无法将对象放入其中 - 只有 varchars/integer 等
    • 内表太复杂了。奇怪的是它似乎已经修复了自己。不知道发生了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2021-02-23
    • 1970-01-01
    • 2021-02-11
    • 2017-12-29
    • 1970-01-01
    相关资源
    最近更新 更多