我想将一个Singleton类的功能继承到另一个Singleton中,但这是不可能的(我知道为什么)。
然后,我决定尝试使用委派。编译器没有抱怨,我将只是出于好奇而看看会发生什么!
您可以在下面找到更多信息:
ThrottleBrake
(implementation)ThrottleBrakeImpl
,扩展了(implementation)ElectronicThrottleBrakeImpl
:object ElectronicThrottleBrakeImpl: ThrottleBrake by ThrottleBrakeImpl {
override fun throttle(direction: String, value: Int): String {
return ThrottleBrakeImpl.throttle(direction, value)
}}
但是我想知道这是否是一个好习惯。我应该继续这样的项目还是应该找到更好的解决方案?
最佳答案
实际上,我使用类似的星座来具有可扩展的枚举。
enum class NonExtendable {
A, B
}
变为:
object Extendables {
object A : Extendable by ExtendableImpl()
object B : Extendable by ExtendableImpl()
}
interface Extendable
class ExtendableImpl : Extendable
现在,我可以提供一个附加的〜enum值
C
,如下所示:object C : Extendable by ExtendableImpl()
而且我认为也有许多其他人将此记录为可扩展枚举,但是尽管如此,我也找不到很好的来源(我在防火墙后面)来支持它;
我想知道为什么您首先需要单例。但是,如果它们像枚举,那么我会说这种做法肯定是可以的;-)(否则我会陷入麻烦)
关于inheritance - Kotlin-委派而不是单例继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51536448/