使用 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()) }