我有一个ResponseMessage
的流,它可以是不同的子类型。我想将流分成流,我可以在自己的流中处理每种类型。
我的第一次尝试导致了这个我看不到的问题。
file.readLines()
.toObservable()
.map { mapper.readValue(it, ResponseMessage::class.java) }
.groupBy { when(it) {
is MarketChangeMessage -> it::class
else -> it::class
}}
.map { it.????? } //How can possible this work?
我现在的问题是: 在一个特定子类型上将流划分为流的惯用方法是什么?
答案 0 :(得分:2)
您可以使用ofType
运算符:
ofType() - 仅发出源Observable中属于特定类的那些项。
示例:
val messages = file.readLines()
.toObservable()
.map { mapper.readValue(it, ResponseMessage::class.java) }
.share() // <-- or other multicasting operator
messages
.ofType(MarketChangeMessage::class)
.subscribe()
messages
.ofType(Other::class)
.subscribe()