智能广播是不可能的,因为属性具有开放或自定义的 getter
我正在学习 Kotlin。我的代码如下:
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
decoupler.attachNotifier(this)
if(activity is ScreenRouter) {
decoupler.attachRouter(activity)
}
}
attachRouter()
方法:
fun attachRouter(router: ScreenRouter?) {
this.router = router
}
如文档中所写,kotlin 在检查 is 运算符后自动转换为类型。所以,我期望它会起作用。但相反,它困扰着我编译错误说:
智能投射到 ScreenRouter 是不可能的,
因为活动
是具有打开或自定义 getter 的属性。
我想也许错误是因为活动可以空,所以我尝试了:
if(activity!=null && activity is ScreenRouter) {
decoupler.attachRouter(activity)
}
但它不起作用,编译失败,出现相同的错误。
但是,以下代码工作正常:
if(activity is ScreenRouter) {
decoupler.attachRouter(activity as ScreenRouter)
}
没关系,但上面的错误似乎并不能解释为什么智能广播会失败。我不是 Kotlin 专家,我只是一个学习 Kotlin 的初学者。我在任何地方都没有找到任何文档。这些错误描述使 Kotlin 学习起来很糟糕。任何人都可以用简单的术语解释吗?