Я хотел бы иметь .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