Как я могу получить все реализации интерфейса во время выполнения в Kotlin - PullRequest
0 голосов
/ 23 декабря 2018

Я знаю, что могу получить все подклассы sealed class в Kotlin, но я ищу способ получить все реализации интерфейса.

Так что вместо ...

sealed class HotDrinkFactory {
    abstract fun prepare(amount: Int): HotDrink
}

class TeaFactory : HotDrinkFactory() {
    override fun prepare(amount: Int): HotDrink {
        ...
    }
}

class CoffeeFactory : HotDrinkFactory() {
    override fun prepare(amount: Int): HotDrink {
        ...
    }
}

fun main(args: Array<String>) {
    val hotDrinkFactories = HotDrinkFactory::class.sealedSubclasses
    hotDrinkFactories.forEach { println(it::class.qualifiedName) }
}

... Я хотел бы получить

interface HotDrinkFactory {
    fun prepare(amount: Int): HotDrink
}

class TeaFactory : HotDrinkFactory {
    override fun prepare(amount: Int): HotDrink {
        ...
    }
}

class CoffeeFactory : HotDrinkFactory {
    override fun prepare(amount: Int): HotDrink {
        ...
    }
}

fun main(args: Array<String>) {
    val hotDrinkFactories = HotDrinkFactory::class.<<< Something here? >>>
    hotDrinkFactories.forEach { println(it::class.qualifiedName) }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...