【问题标题】:Android - Generic type as a Expressions In ObservableTransformerAndroid - 泛型类型作为 ObservableTransformer 中的表达式
【发布时间】:2019-09-25 19:32:55
【问题描述】:

我将在我的应用程序中使用 observable 转换器将数据从一种类型转换为另一种类型,因此为此我创建了一个带有一个参数 <T1> 的泛型类,其中 T1 是我期望获得输出的类型

例子

class Transformer<T1> {

    fun transform(): ObservableTransformer<String, T1> {

        return ObservableTransformer { data ->

            data.map {

                if (T1 is Int) {       //getting compilation error like T1 is not an expression
                    return IntDataType
                }

                if (T1 is Double) { //getting compilation error like T1 is not an expression
                    return DoubleDataType
                }
            }
        }
    }
}

上面的类是转换器,它以字符串形式获取输入,并根据给定的泛型类型 T1 将 String 转换为 someData 类型
所以我会像这样调用上面的代码

 getSomeData()
            .compose(Transformer<Double>().tranform())
            .map{ it: double
            } 

还有其他解决方案可以像这种变压器一样执行吗? 任何帮助

【问题讨论】:

    标签: android kotlin rx-java2 rx-kotlin2


    【解决方案1】:

    T1 is Int 非语句不起作用,因为 T1 是泛型类型,而 is Int 检查对象的类型:1 is Int

    您可以编写一个专用的转换器,而不是使用泛型。通常,您会在运行时丢失 T1 的类型信息。

    fun Observable<String>.asDouble() = map { it.toDouble() }
    
    getSomeData().asDouble().map { value: Double -> }
    

    您甚至不需要真正的转换器,因为它是一个简单的映射。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-18
      • 2022-12-13
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多