Sobes.tech
Junior

Kotlin'da statik o'zgaruvchi qanday yaratish mumkin?

sobes.tech AI

AIdan javob

Kotlinda Java'dagi static kalit so'zining to'g'ridan-to'g'ri ekvivalenti yo'q. O'rniga quyidagilar ishlatiladi:

  • companion object: Sinfning "statik" a'zolarini (maydonlar va metodlar) yaratish uchun. Ular sinfga bog'liq, aniq nusxaga emas.
  • Paket darajasidagi funksiyalar va xususiyatlar: Faylning yuqori darajasida (Top-level declarations) e'lon qilinadi va sinfni nom bilan sifatlash shart emas, istalgan joydan kirish mumkin.

companion object bilan misol:

class MyClass {
    companion object {
        const val TAG = "MyClass" // Kompilyatsiya vaqtidagi konstant (Java'dagi final static kabi)
        var instanceCount = 0 // Sinf bilan bog'liq o'zgaruvchi
    }

    init {
        instanceCount++
    }
}

Paket xususiyatlari bilan misol:

// MyGlobals.kt faylida
const val GLOBAL_CONST = "This is a global constant"
var globalCounter = 0

fun incrementGlobalCounter() {
    globalCounter++
}

Farqlar va tanlov:

  • companion object sinf bilan mantiqiy bog'liq bo'lgan a'zolar uchun mos keladi.
  • Paket a'zolari umumiy utilitar, konstantalar yoki aniq sinfga bog'liq bo'lmagan o'zgaruvchilar uchun qulay.
  • Kompilyatsiya vaqtidagi konstantalar uchun, const val ni companion object ichida yoki paket deklaratsiyasi sifatida foydalaning.