我具有以下函数,该函数定义了一个通用参数,该参数是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中的交叉路口支持,但有一种方法可以转换为交叉路口类。