Maybe I’m oversimpifying but if a class has zero-arg constructors, then all of its instances are identical, therefore the values they contain are actually globals.
And you can delegate to a global, the following code is legal:
interface Interface
object Foo : Interface
object Bar : Interface by Foo
Also could you provide a concrete example of this? Delegation is useful when you’re wrapping some existing object and somehow combine that with other functionality. I can’t imagine that happening in an interesting way with singletons.