在Kotlin中,有没有一种方法可以将变量转换为Enum和接口的交集?

时间:2019-07-11 01:01:07

标签: kotlin enums casting

我具有以下函数,该函数定义了一个通用参数,该参数是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 } }

但是,我找不到一种方法来将变量转换为同时满足enumEnum<*>的必需GameConfigEnum参数。摘录一段调用代码:

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

我需要显式强制转换,如果我强制转换为GameConfigEnum,则期望为Enum<*>,如果我强制转换为Enum<*>,则期望为GameConfigEnumprop.value满足调用代码中的if语句。

我试图阅读Kotlin中的交叉路口支持,但有一种方法可以转换为交叉路口类。

0 个答案:

没有答案