Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-在ObservateTransformer中作为表达式的泛型类型_Android_Kotlin_Rx Java2_Rx Kotlin2 - Fatal编程技术网

Android-在ObservateTransformer中作为表达式的泛型类型

Android-在ObservateTransformer中作为表达式的泛型类型,android,kotlin,rx-java2,rx-kotlin2,Android,Kotlin,Rx Java2,Rx Kotlin2,我将在我的应用程序中使用observable transformer将数据从一种类型转换为另一种类型,因此为此我创建了一个带有一个参数的泛型类,其中T1是我希望获得输出的类型 范例 class Transformer<T1> { fun transform(): ObservableTransformer<String, T1> { return ObservableTransformer { data -> d

我将在我的应用程序中使用observable transformer将数据从一种类型转换为另一种类型,因此为此我创建了一个带有一个参数的泛型类,其中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
                }
            }
        }
    }
}
类转换器{
fun transform():ObservateTransformer{
返回可观察的转换器{data->
data.map{
如果(T1是Int){//像T1这样的编译错误不是一个表达式
返回IntDataType
}
如果(T1是Double){//像T1这样的编译错误不是一个表达式
返回双数据类型
}
}
}
}
}
上面的类是transformer,它以字符串的形式获取输入,并根据给定的泛型类型T1将字符串转换为someData类型
所以我会这样打电话给上面的人

 getSomeData()
            .compose(Transformer<Double>().tranform())
            .map{ it: double
            } 
getSomeData()
.compose(Transformer().tranform())
.map{it:double
} 
有没有其他类似于这种变压器的解决方案?
任何帮助都不能使用
T1 is Int
非语句,因为
T1
是泛型类型,而
is Int
检查对象的类型:
1 is Int

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

fun Observable<String>.asDouble() = map { it.toDouble() }

getSomeData().asDouble().map { value: Double -> }
fun Observable.asDouble()=map{it.toDouble()}
getSomeData().asDouble().map{value:Double->}
您甚至不需要实际的转换器,因为它是一个简单的映射