我想将一个Singleton类的功能继承到另一个Singleton中,但这是不可能的(我知道为什么)。

然后,我决定尝试使用委派。编译器没有抱怨,我将只是出于好奇而看看会发生什么!
您可以在下面找到更多信息:

  • 接口(interface)ThrottleBrake(implementation)
  • 单例ThrottleBrakeImpl,扩展了(implementation)
  • 上方的接口(interface)
  • 下一个代码段中显示了另一个使用上述两种方法的单例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/

    10-12 00:24
    查看更多