【发布时间】:2019-06-06 19:15:38
【问题描述】:
我正在使用一种返回不同类型对象的方法,我使用了 Any 类型返回,但是有更好的选择来实现这一点吗? 这是我的方法:
override fun getNavItemById(dCSServiceContext: DCSServiceContext): Observable<Any> {
return scribeProvider.getNavItemById(dCSServiceContext).map { navItem ->
scribePresenter.presentNativeItem(navItem)
}.toObservable()
}
在我使用 when 运算符对返回的对象进行强制转换之后,我正在做这样的事情:
when (item) {
is NavItem -> {
if (parentItem.hasChildren) {
parentItem.items?.add(item)
recursiveItem = item
}
}
is Image -> {
if (parentItem.hasImages) {
parentItem.image = Image(item.image, item.selectedImage)
recursiveItem = parentItem
}
}
}
我的另一个疑问是如何使用这种方法并用另一种方法提取这种类型的对象。
谢谢!!!
【问题讨论】:
-
你的对象之间有什么共同点吗?他们是否实现了任何特定的接口?归还对象后,您在哪里使用该对象,是否将其转换为任何对象? toObservable() 返回什么?
-
对象并不常见,是的,我正在使用 when 运算符对对象进行强制转换。在这种情况下,我可以收到物品或图片。