Есть ли в Kotlin способ привести переменную как пересечение Enum и интерфейса? - PullRequest
0 голосов
/ 11 июля 2019

У меня есть следующая функция, которая определяет общий параметр, который является пересечением Enum и интерфейса.Интерфейс GameConfigEnum в основном заставляет Enum иметь член displayName.

fun <E> valFromDisplayName(enum: E, displayName: String) : E where E: Enum<*>, E: GameConfigEnum{ return enum.javaClass.enumConstants.first { it.displayName == displayName } }

Однако я не могу найти способ привести переменную как требуемую enum параметр, который удовлетворяет как Enum<*>, так и GameConfigEnum.Взяв фрагмент кода вызова:

if(prop.value is Enum<*> && prop.value is GameConfigEnum) { val x = valFromDisplayName(prop.value as ??, value as String) }

Мне нужно явное приведение, и если я приведу к GameConfigEnum, оно ожидает Enum<*>, а если я приведу к Enum<*> он ожидает GameConfigEnum.prop.value удовлетворяет выражению if в вызывающем коде.

Я пытался прочитать о поддержке пересечения классов в Kotlin, но не смог найти способ привести к классу пересечения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...