Sobes.tech
Middle

Ի՞նչ օբյեկտներ կան Kotlin-ում և ինչպես են դրանք կոմպիլացվում:

sobes.tech AI

Պատասխան AI-ից

Kotlin- ում օբյեկտները օգտագործվում են սինգլթոններ ստեղծելու համար: Դրանք հայտարարում են object բանալի բառով:

object Singleton {
    fun doSomething() {
        println("Բարև սինգլթոնից!")
    }
}

Կոմպիլյացիայի ժամանակ, Kotlin-ի Singleton օբյեկտը փոխարկվում է Java Singleton դասի, որի մասնավոր ստատիկ INSTANCE դաշտն ու ստատիկ ինիցիալիզացիոն բլոկը կա:

// Գեներացված Java կոդի օրինակ
public final class Singleton {
   public static final Singleton INSTANCE; // Միայն օրինակ համար ստատիկ դաշտ

   public final void doSomething() { // Օբյեկտի մեթոդ
      System.out.println("Բարև սինգլթոնից!");
   }

   private Singleton() { // Պրիվատ կոնստրուկտոր
   }

   static { // Ստատիկ ինիցիալիզացիոն բլոկ
      INSTANCE = new Singleton(); // Միայն օրինակ ստեղծում
   }
}

Երբ Singleton.doSomething() մեթոդը կանչվում է Kotlin- ում, կոմպիլյատորը գեներացնում է Singleton.INSTANCE.doSomething() ստատիկ մեթոդի կանչ:

Բացի սովորական օբյեկտներից, Kotlin- ում կան նաև՝

  • Ընկերական օբյեկտ (companion object): Օգտագործվում է ստատիկ անդամներ սահմանելու համար դասի ներսում: Դասի անունով հասանելի է: Ամեն դաս կարող է ունենալ առավելագույնը մեկ ընկերական օբյեկտ:

    class MyClass {
        companion object {
            const val MY_CONSTANT = "մեկ արժեք"
            fun create(): MyClass {
                return MyClass()
            }
        }
    }
    

    Կոմպիլյացվում է որպես դասի ստատիկ անդամներ Java- ում:

  • Օբյեկտ արտահայտություն (object expression): Օգտագործվում է անանուն օբյեկտներ ստեղծելու համար (նման է անանուն դասերին Java- ում):

    val listener = object : MyInterface {
        override fun onClick() {
            println("Կտտացվեց!")
        }
    }
    

    Կոմպիլյացվում է որպես անանուն դաս Java- ում: