Deklarácie a výrazy objektov Kotlin

V tomto článku sa pomocou príkladov dozviete o deklaráciách objektov (singletonoch) a výrazoch objektov.

Vyhlásenia o objekte

Singleton je objektovo orientovaný vzor, ​​kde môže mať trieda iba jednu inštanciu (objekt).

Napríklad pracujete s aplikáciou, ktorá má backend databázy SQL. Chcete vytvoriť skupinu pripojení na prístup k databáze a opätovné použitie rovnakého pripojenia pre všetkých klientov. Za týmto účelom môžete vytvoriť spojenie prostredníctvom triedy singleton, aby každý klient získal rovnaké pripojenie.

Kotlin poskytuje jednoduchý spôsob vytvárania singletonov pomocou funkcie deklarácie objektu. Na to sa používa kľúčové slovo objekt.

 objekt SingletonExample (… // telo triedy …)

Vyššie uvedený kód kombinuje deklaráciu triedy a deklaráciu jednej inštancie SingletonExample triedy.

Deklarácia objektu môže obsahovať vlastnosti, metódy atď. Nemajú však dovolené mať konštruktory (čo má zmysel). Prečo?

Podobne ako objekty normálnej triedy, aj pomocou .notácie môžete volať metódy a pristupovať k vlastnostiam .

Príklad: Deklarácia objektu

 object Test ( private var a: Int = 0 var b: Int = 1 fun makeMe12(): Int ( a = 12 return a ) ) fun main(args: Array) ( val result: Int result = Test.makeMe12() println("b = $(Test.b)") println("result = $result") )

Po spustení programu bude výstup:

 b = 1 výsledok = 12

Deklarácia objektu môže dediť z tried a rozhraní podobným spôsobom ako bežné triedy.

Singletony a injekcie závislostí

Vyhlásenia o objektoch môžu byť niekedy užitočné. Nie sú však ideálne vo veľkých softvérových systémoch, ktoré interagujú s mnohými ďalšími časťami systému.

Odporúčame prečítať: Závislosť Injection & Singleton Design pattern

Kotlinov objekt Výrazy

Kľúčové slovo object je možné použiť aj na vytvorenie objektov anonymnej triedy známej ako anonymné objekty. Používajú sa, ak potrebujete vytvoriť objekt miernej úpravy niektorej triedy alebo rozhrania bez toho, aby ste preň deklarovali podtriedu. Napríklad ,

 window.addMouseListener (object: MouseAdapter () (override fun mouseClicked (e: MouseEvent) (//…) override fun mouseEntered (e: MouseEvent) (//…)))

(Príklad je prevzatý z oficiálnej stránky dokumentov Kotlin.)

Tu je vyhlásený anonymný objekt rozširujúci triedu MouseAdapter. Program prepíše dve MouseAdaptermetódy: mouseClicked()a mouseEntered().

V prípade potreby môžete anonymnému objektu priradiť meno a uložiť ho do premennej. Napríklad,

 val obj = object: MouseAdapter () (prepísať zábavnú myš Clicked (e: MouseEvent) (//…) prepísať zábavnú myš mouseEntered (e: MouseEvent) (//…))

Príklad: Kotlin Object Expression

 open class Person() ( fun eat() = println("Eating food.") fun talk() = println("Talking with people.") open fun pray() = println("Praying god.") ) fun main(args: Array) ( val atheist = object : Person() ( override fun pray() = println("I don't pray. I am an atheist.") ) atheist.eat() atheist.talk() atheist.pray() ) 

Po spustení programu bude výstup:

Jesť jedlo. Rozprávanie s ľuďmi. Nemodlím sa. Som ateista.

Tu je anonymný objekt uložený v premennej ateista, ktorá implementuje triedu Person s pray()metódou, ktorá je prepísaná.

Ak implementujete triedu, ktorá má konštruktor na vyhlásenie anonymného objektu, musíte odovzdať príslušné parametre konštruktora. Napríklad,

 open class Person(name: String, age: Int) ( init ( println("name: $name, age: $age") ) fun eat() = println("Eating food.") fun talk() = println("Talking with people.") open fun pray() = println("Praying god.") ) fun main(args: Array) ( val atheist = object : Person("Jack", 29) ( override fun pray() = println("I don't pray. I am an atheist.") ) atheist.eat() atheist.talk() atheist.pray() ) 

Po spustení programu bude výstup:

meno: Jack, vek: 29 Jesť jedlo. Rozprávanie s ľuďmi. Nemodlím sa. Som ateista.

Zaujímavé články...