Как объявить параметр расширения для общих помощников перечислений

Я хотел бы иметь .MAX на общих перечислениях для представления значений.

Я попытался немного поиграть, но я не мог понять.

Когда я пишу, например, это:

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

Он жалуется на enumValues() что

Ошибка вывода типа: недостаточно информации для вывода параметра T в

inline fun> enumValues ​​(): Array Пожалуйста, укажите это явно.

Это имеет смысл, затем я также попробовал:

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

Он жалуется на второй E

Аргументы типа для внешнего класса являются избыточными при упоминании вложенного класса

Есть ли способ?

Вы должны использовать параметр типа reified, чтобы фактический тип перечисления использовался на каждом сайте вызова:

 inline val <reified T : Enum<T>> T.MAX get() = enumValues<T>().size