使用 RxJava 时会遇到很多泛型,一不小心就进入泛型地狱,RxJava 遇到 Kotlin + Lambda 表达式,看看效果
以创建 Single 为例:
- 没有 Lambda:
Single.create(object : SingleOnSubscribe<Any>{
override fun subscribe(emitter: SingleEmitter<Any>) {
it.onSuccess(Any())
}
})
- 有 Lambda1:
Single.create(SingleOnSubscribe<Any> { it.onSuccess(Any()) })
- 有 Lambda2 泛型放在方法和括号之间:
这种方式适合方法名唯一或者方法参数数量不同而且参数顺序类型不同的情况, 这样只能使用上面的方式调用了
Single.create<Any> { it.onSuccess(Any()) }