Code:
class AnyActivity : IAnyActivityView {
override lateinit var myButton: MyButton
}
class AnyActivityPresenter {
var view:IAnyActivityView = AnyActivity()
fun makeFunc() {
view.myButton.showProgress()
view.myButton.hideProgress()
}
}
class MyButton() : HasProgress {
override fun showProgress() {
}
override fun hideProgress() {
}
}
interface HasProgress {
fun showProgress()
fun hideProgress()
}
interface IAnyActivityView {
var myButton: HasProgress
}
Why the error occurs
Type of ‘myButton
’ doesn’t match the type of the overridden var-property ‘public abstract var myButton: HasProgress defined in IAnyActivityView
’ and override lateinit var myButton: MyButton
doesn’t smart cast to HasProgress
?