如何在通用枚举随播广告上声明扩展参数

ele*_*ect 1 generics extension-methods enums kotlin companion-object

我想.MAX在通用枚举上表示值计数.

我试着玩一点,但我想不出来.

当我写作时,例如,这个:

val Enum.Companion.MAX get() = enumValues().size

它抱怨enumValues()

类型推断失败:没有足够的信息来推断参数T in

inline fun> enumValues():Array请明确指定它.

这很有道理,然后我也试过了:

val <E> Enum<E>.Companion.MAX get() = enumValues().size

它抱怨第二个 E

引用嵌套类时,外部类的类型参数是多余的

有办法吗?

hot*_*key 7

您必须使用reified类型参数,以便在每个调用站点使用实际的枚举类型:

inline val <reified T : Enum<T>> T.MAX get() = enumValues<T>().size
Run Code Online (Sandbox Code Playgroud)