在Kotlin上,定义方法时,函数的参数需要其类型注释。
就我而言,我从一个接口(interface)有两个类。
interface Base{
fun method()
}
class DervA():Base{
fun override method(){
...
}
}
class DervB():Base{
fun override method(){
...
}
}
而且,我希望从其他函数中调用它们的方法,例如
fun test_method(inst){
inst.method()
}
但是,Kotlin编译器提示“在值参数上需要类型注释”。
我应该为每个类定义“test_method”吗?
fun test_method_for_DervA(inst:DervA){
inst.method()
}
fun test_method_for_DervB(inst:DervB){
inst.method()
}
您有更聪明的方法吗?
最佳答案
你可以做
fun testMethod(inst: Base) {
inst.method()
}
由于
DervA
和DervB
均为Base
,因此它们也可以传递给testMethod
,并将调用其覆盖的method
。这是OOP的基本原则之一。请注意,如果
method
和testMethod
具有相同的返回类型,则可以将其缩短为fun testMethod(inst: Base) = inst.method()
关于没有类型注释的Kotlin函数参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47141388/