smallufo
sealed interface
hho
ephemient
val queue = ArrayDeque(T::class.sealedSubclasses) generateSequence(queue::removeFirstOrNull).filter(mutableSetOf<KClass<*>>()::add).onEach { queue += it.sealedSubclasses }.toList()
sealed interface MySealedInterface { fun doSomething() } object Obj1 : MySealedInterface { override fun doSomething() { println("obj1 ") } } object Obj2 : MySealedInterface { override fun doSomething() { println("obj2") } } fun main() { val queue = ArrayDeque(MySealedInterface::class.sealedSubclasses) val impls = generateSequence(queue::removeFirstOrNull) .filter(mutableSetOf<KClass<*>>()::add) .onEach { queue += it.sealedSubclasses } .toList() impls.forEach { impl -> impl.objectInstance!!.doSomething() } }
object
MySealedInterface.objects
MySealedInterface::class.sealedSubclasses
A modern programming language that makes developers happier.