gpt4 book ai didi

kotlin - 具有具体类型参数的替代功能

转载 作者:行者123 更新时间:2023-12-02 12:42:48 26 4
gpt4 key购买 nike

嗨,我想知道为什么下面的例子不起作用

abstract class BaseClass {

}

class ConcretClasOne : BaseCalculator {


}

class ConcretClasTwo : BaseCalculator {


}

abstract class BaseRun {

abstract fun run(param: BaseClass): Int
}

class ConcretRun : BaseRun {

override fun run(param: ConcretClasOne): Int {

return 0
}
}

这显示了一条消息 run overrides nothing

我想kotlin无法匹配抽象类和具体实现,但是还有什么其他方法可以模拟这种行为,具体类 ConcretRun中的run方法应该接收具体参数 ConcretClasOne吗?

最佳答案

泛型

使用泛型,可以使基类具有扩展基类的类型,以便run方法可以采用该类型。

abstract class BaseClass {

}

class ConcretClasOne: BaseCalculator {


}

class ConcretClasTwo: BaseCalculator {


}

abstract class BaseRun<T: BaseClass> {
abstract fun run(param: T): Int
}

class ConcretRun: BaseRun<ConcretClasOne> {
override fun run(param: ConcretClasOne): Int {
return 0
}
}

为什么您的代码不起作用

目前,您正在尝试覆盖具有更特定类型的方法,但是由于更通用的基本方法可以接受更多类型,因此更特定的方法无法覆盖它。

关于kotlin - 具有具体类型参数的替代功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49184239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com