Ключевое слово const
Ключевое слово const используется для объявления констант времени компиляции.
Константы, объявленные с этим модификатором, должны быть:
- объявлены на верхнем уровне (вне класса) или как член объекта
objectили компаньонаcompanion object - инициализированы значением примитивного типа (
Int,Double,Booleanи т.д.) или строкойString - инициализированы во время компиляции, а не выполнения
Синтаксис
// Константа верхнего уровня
const val CONSTANT_NAME = value
// Константа внутри объекта
object MyObject {
const val CONSTANT_NAME = value
}
// Константа внутри компаньона
class MyClass {
companion object {
const val CONSTANT_NAME = value
}
}
Пример
Объявление констант верхнего уровня:
const val PI = 3.14159
const val MAX_USERS = 100
const val APP_NAME = "MyApplication"
const val IS_DEBUG = true
Пример
Объявление констант внутри объекта:
object MathConstants {
const val PI = 3.14159
const val E = 2.71828
}
val radius = 5.0
val area = MathConstants.PI * radius * radius
println(area)
Результат выполнения кода:
Double 78.53975
Пример
Объявление констант внутри компаньон объекта:
class Configuration {
companion object {
const val TIMEOUT = 5000
const val MAX_RETRIES = 3
const val BASE_URL = "https://api.example.com"
}
}
println(Configuration.TIMEOUT)
println(Configuration.BASE_URL)
Результат выполнения кода:
Int 5000
String "https://api.example.com"
Пример
Недопустимое использование const (вызовет ошибку компиляции):
// Ошибка: const-переменная должна быть инициализирована примитивом или строкой
const val CURRENT_TIME = System.currentTimeMillis()
// Ошибка: const-переменная не может быть объявлена внутри функции
fun myFunction() {
const val LOCAL_CONST = 10
}
// Ошибка: const-переменная не может быть объявлена в обычном классе
class MyClass {
const val CLASS_CONST = 10 // Не допускается
}
Отличие const val от val
Основные различия между const val и обычным val:
const valвычисляется во время компиляции,val- во время выполненияconst valможет содержать только примитивы и строки,valможет содержать любые значенияconst valдолжна быть инициализирована сразу,valможет быть инициализирована позжеconst valдоступна только на верхнем уровне или в объектах/компаньонах
Смотрите также
-
ключевое слово
val,
для объявления неизменяемых переменных -
ключевое слово
var,
для объявления изменяемых переменных -
объекты
object,
для создания синглтонов и группировки констант -
компаньоны
companion object,
для создания статических членов класса