Проблема с values()
состоит в том, что он существует только в каждом конкретном классе перечисления, и вы не можете вызвать его для универсального перечисления, чтобы получить его значения, что довольно полезно в некоторых случаях.Взяв простейший пример желания получить доступ ко всем значениям в String
, enumValues
позволяет написать функцию, подобную этой:
inline fun <reified T: Enum<T>> getEnumValuesString(): String {
// could call RGB.values(), but not T.values()
// even with the generic constraint and reified generics
// this works, however
return enumValues<T>().joinToString()
}
, которую затем можно вызывать с любым определенным вами классом перечисления:
getEnumValuesString<RGB>()