Enum (от enumeration) — это специальный тип данных, который позволяет определить набор именованных констант. Это полноценный класс, который может содержать методы, поля и реализовывать интерфейсы.
public enum Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
enum class Direction {
NORTH,
SOUTH,
EAST,
WEST
}
enum class ViewState {
LOADING,
CONTENT,
ERROR,
EMPTY
}
// Использование
when (state) {
ViewState.LOADING -> showProgress()
ViewState.CONTENT -> showContent()
ViewState.ERROR -> showError()
ViewState.EMPTY -> showEmptyView()
}
public enum NetworkType {
WIFI,
MOBILE,
ETHERNET,
NONE
}
// Проверка типа сети
if (currentNetwork == NetworkType.WIFI) {
downloadLargeFile();
}
enum class Operation(val symbol: String) {
PLUS("+") { override fun apply(x: Int, y: Int) = x + y },
MINUS("-") { override fun apply(x: Int, y: Int) = x - y },
TIMES("*") { override fun apply(x: Int, y: Int) = x * y },
DIVIDE("/") { override fun apply(x: Int, y: Int) = x / y };
abstract fun apply(x: Int, y: Int): Int
}
// Использование
Operation.PLUS.apply(5, 3) // 8
java.lang.Enum
switch
values()
и valueOf()
enum class AnalyticsEvent(val eventName: String) {
SCREEN_OPEN("screen_open"),
BUTTON_CLICK("button_click"),
USER_LOGIN("user_login");
fun track(parameters: Map<String, Any> = emptyMap()) {
FirebaseAnalytics.logEvent(eventName, parameters)
}
}
// Использование
AnalyticsEvent.BUTTON_CLICK.track(
mapOf("button_id" to "login_button")
)
enum — это мощный инструмент для работы с фиксированным набором значений, который улучшает читаемость, безопасность и поддерживаемость кода. В Android-разработке enum особенно полезен для представления состояний, типов событий и различных вариантов поведения. Хотя в некоторых случаях можно использовать альтернативы, enum остается оптимальным выбором для большинства сценариев работы с ограниченным набором именованных значений.