union types, сейчас в kotlin?
Почему сразу костыли, sealed interface и вперед
А как тут выкрутиться? fun getClass(type: String): KClass<*> { return when (type) { "string" -> String::class "number" -> Int::class else -> Any::class } }
А как вас тут юниот типы спасут? Дженерик стирается
На этапе компиляции, я буду знать, что там или KClass<String>, или KClass<Int>, или KClass<Any>, а дальше уже без разницы
sealed interface ClassWrapper<T> object StringClassWrapper: ClassWrapper<String> object IntClassWrapper: ClassWrapper<Int
Хм. Спасибо, до такого не додумался
Это размеченный юнион, а не просто юнион
Хотя момент, это не решает вопрос, просто будет: fun getClass(type: String): ClassWrapper<*> вместо fun getClass(type: String): KClass<*>
Можно каждому из них добавить поле theClass
Неразмеченные юнионы в современных языках помимо сишки еще поискать надо.
У нас точно совпадает определение размеченных юнионов?
Ок, ошибся, забыл как sealed работают :)
Обсуждают сегодня