Kotlin中的覆盖方法和通用方法之间的区别是什么?

时间:2018-12-11 06:15:27

标签: function kotlin

Screen Shot

val showMethod:(String) -> Unit = this::showLoadingDialog
override fun start(msg: String) = showMethod

我想使用启动方法= this :: showLoadingDialog, 但是出现编译错误!该方法不是重写***的子类型!

为什么?我该怎么办?

1 个答案:

答案 0 :(得分:3)

这是不正确的,因为start不是变量,而是函数。

override fun start(msg: String) = showMethod

等效于

override fun start(msg: String) {
    return showMethod
}

这是不正确的。 start应该返回Unit而不是(String) -> Unit

您想做的是

override fun start(msg: String) {
    return showMethod(msg)
}

等效于

override fun start(msg: String) = showMethod(msg)