Objekty v Kotline

1. Úvod

Kotlin si veľa nápadov požičal z iných jazykov; jedným z takýchto konštruktov je objekt.

V tomto rýchlom článku uvidíme, čo sú to objekty a ako sa dajú použiť.

2. Objekty v Kotline

V Kotline, rovnako ako takmer vo všetkých jazykoch JVM, existuje koncept a trieda ako jadro modelu objektovo orientovaného programovania. Kotlin zavádza koncept objekt Na vrchu tamtoho.

Keďže a trieda popisuje štruktúry, ktoré je možné inštancovať podľa potreby a umožňuje toľko prípadov, koľko je potrebné, an objekt namiesto toho predstavuje jednu statickú inštanciu, a nikdy nemôže mať viac alebo menej ako tento jeden prípad.

To je užitočné pre rôzne techniky, vrátane jednoduchých objektov a jednoduchého zabalenia funkcií na zapuzdrenie:

objekt SimpleSingleton {hodnota odpovede = 42; fun greet (name: String) = "Dobrý deň, $ name!" } assertEquals (42, SimpleSingleton.answer) assertEquals ("Dobrý deň, svet!", SimpleSingleton.greet ("svet"))

Objekty tiež ponúkajú úplnú podporu pre modifikátory viditeľnosti, umožňujúce skrývanie a zapuzdrovanie údajov ako v ktorejkoľvek inej triede:

Counter objektu {private var count: Int = 0 fun currentCount () = count fun increment () {++ count}} Counter.increment () println (Counter.currentCount ()) println (Counter.count) // toto zlyhá zostaviť

Navyše, objekty môžu rozširovať triedy a implementovať rozhrania. Pritom sú efektívne jednorazovými inštanciami rodičovských tried, presne podľa očakávania.

To môže byť veľmi užitočné v prípadoch, keď máme implementáciu bez štátnej príslušnosti a nie je potrebné zakaždým vytvárať novú inštanciu - napr. Komparátor:

object ReverseStringComparator: Comparator {override fun compare (o1: String, o2: String) = o1.reversed (). compareTo (o2.reversed ())} val strings = listOf ("Hello", "World") val sortStrings = strings .sortedWith (ReverseStringComparator)

3. Čo je sprievodný objekt?

Sprievodné objekty sú v podstate rovnaké ako štandardné objekt definícia, iba s niekoľkými ďalšími funkciami, ktoré uľahčujú vývoj.

Sprievodný objekt je vždy deklarovaný vo vnútri inej triedy. Aj keď môže mať meno, nemusí ho mať, v takom prípade má automaticky názov Spoločník:

trieda OuterClass {sprievodný objekt {// ekvivalent k „sprievodnému objektu Companion“}}

Sprievodné objekty umožňujú prístup k ich členom zvnútra sprievodnej triedy bez uvedenia názvu.

Zároveň je možné k viditeľným členom získať prístup aj mimo triedy, ak je predponou názvu triedy:

trieda OuterClass {sprievodný objekt {private val secret = "Nevidíš ma" val public = "Môžeš ma vidieť"} zábava getSecretValue () = secret} assertEquals ("Vidíš ma", OuterClass.public) assertEquals ( „You can't see me“, OuterClass.secret) // Nemôžem získať prístup k „tajomstvu“

4. Statické polia

Hlavné použitie pre sprievodné objekty je nahradenie statických polí / metód známych z Javy. Tieto polia sa však automaticky nevygenerujú ako také vo výslednom súbore triedy.

Ak ich potrebujeme generovať, musíme použiť @JvmStatic namiesto toho do poľa anotáciu, ktorá potom podľa očakávania vygeneruje bytecode:

trieda StaticClass {sprievodný objekt {@JvmStatic val staticField = 42}}

Bez toho, aby ste to urobili, statické pole staticField nie je ľahko prístupný z kódu Java.

Pridaním tejto anotácie sa vygeneruje pole presne podľa potreby pre štandardné statické pole, čo v prípade potreby umožní úplnú interoperabilitu z prostredia Java.

To znamená, že vyššie uvedené generuje a statický metóda getStaticField () na StaticClass trieda.

5. Záver

Objekty v Kotline pridávajú celú vrstvu navyše, ktorú môžeme použiť, čím ďalej zjednodušujú náš kód a uľahčujú jeho vývoj.

Sprievodné objekty to potom posúvajú ešte ďalej a umožňujú tak čistejší kód, ktorý sa ľahšie udržuje a pracuje sa s ním.

Útržky kódu nájdete ako vždy na GitHube.


$config[zx-auto] not found$config[zx-overlay] not found