在Kotlin上,功能参数在定义方法时需要使用thire类型注释.
就我而言,我有两个来自界面的类.
interface Base{
fun method()
}
class DervA():Base{
fun override method(){
...
}
}
class DervB():Base{
fun override method(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
并且,我希望从其他函数调用他们的方法
fun test_method(inst){
inst.method()
}
Run Code Online (Sandbox Code Playgroud)
但是,Kotlin编译器抱怨"值参数需要类型注释".
我应该为每个类定义"test_method"吗?
fun test_method_for_DervA(inst:DervA){
inst.method()
}
fun test_method_for_DervB(inst:DervB){
inst.method()
}
Run Code Online (Sandbox Code Playgroud)
你有更聪明的方法吗?
你可以这样做
fun testMethod(inst: Base) {
inst.method()
}
Run Code Online (Sandbox Code Playgroud)
由于这两个DervA和DervB是BaseS,它们也可以被传递到testMethod他们重写method将被调用.这是OOP的基本原则之一.
请注意,如果method并且testMethod具有相同的返回类型,则可以将其缩短为
fun testMethod(inst: Base) = inst.method()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4309 次 |
| 最近记录: |