Kotlinin objekti-ilmoitukset ja lausekkeet

Tässä artikkelissa opit objekti-ilmoituksista (singletoneista) ja objekti-ilmaisuista esimerkkien avulla.

Esineilmoitukset

Singleton on objektisuuntainen kuvio, jossa luokassa voi olla vain yksi esiintymä (objekti).

Työskentelet esimerkiksi sovelluksella, jolla on SQL-tietokannan taustajärjestelmä. Haluat luoda yhteysvaraston päästäksesi tietokantaan samalla kun käytät samaa yhteyttä kaikille asiakkaille. Tätä varten voit luoda yhteyden singleton-luokan kautta, jotta jokainen asiakas saa saman yhteyden.

Kotlin tarjoaa helpon tavan luoda yksikköjä objektin ilmoittamisominaisuuden avulla. Tätä varten käytetään objektin avainsanaa.

 object SingletonExample (… // luokan runko …)

Yllä oleva koodi yhdistää luokan ilmoituksen ja yhden yksittäisen luokan Singleton-esimerkin ilmoituksen.

Objekti-ilmoitus voi sisältää ominaisuuksia, menetelmiä ja niin edelleen. Heillä ei kuitenkaan saa olla rakentajia (mikä on järkevää). Miksi?

Samoin kuin normaaliluokan kohteissa, voit kutsua menetelmiä ja käyttää ominaisuuksia käyttämällä .merkintää.

Esimerkki: Objekti-ilmoitus

 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") )

Kun suoritat ohjelmaa, tulos on:

 b = 1 tulos = 12

Objekti-ilmoitus voi periä luokista ja rajapinnoista samalla tavalla kuin tavalliset luokat.

Yksittäiset ja riippuvuusinjektiot

Kohde-ilmoitukset voivat olla hyödyllisiä joskus. Ne eivät kuitenkaan ole ihanteellisia suurissa ohjelmistojärjestelmissä, jotka ovat vuorovaikutuksessa monien muiden järjestelmän osien kanssa.

Suositeltava lukeminen: Riippuvuuden injektio ja Singletonin suunnittelumalli

Kotlin-objektilausekkeet

Kohde-avainsanaa voidaan käyttää myös anonyymien luokkien nimien luomiseen. Niitä käytetään, jos joudut luomaan jonkin luokan tai käyttöliittymän pienen muokkauksen objektin ilmoittamatta sille alaluokkaa. Esimerkiksi ,

 window.addMouseListener (objekti: MouseAdapter () (ohittaa hauskan hiiren napsautetun (e: MouseEvent) (//…) ohittaa hauska mouseEntered (e: MouseEvent) (//…)))

(Esimerkki on otettu Kotlinin viralliselta asiakirja-sivulta.)

Täällä, anonyymi kohde julistetaan ulottuu MouseAdapter class.The ohjelma ohittaa kaksi MouseAdaptermenetelmiä: mouseClicked()ja mouseEntered().

Tarvittaessa voit määrittää nimettömälle objektille nimen ja tallentaa sen muuttujaan. Esimerkiksi,

 val obj = object: MouseAdapter () (ohita hauska mouseClicked (e: MouseEvent) (//…) ohittaa hauska mouseEntered (e: MouseEvent) (//…))

Esimerkki: 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() ) 

Kun suoritat ohjelmaa, tulos on:

Ruoan syöminen. Puhuminen ihmisten kanssa. En rukoile. Olen ateisti.

Tässä nimettömät objektit tallennetaan muuttuvaan ateistiin, joka toteuttaa Person-luokan pray()menetelmällä ohitetaan.

Jos olet toteuttamassa luokkaa, jolla on konstruktori ilmoittamaan nimettömän objektin, sinun on annettava asianmukaiset konstruktorin parametrit. Esimerkiksi,

 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() ) 

Kun suoritat ohjelmaa, tulos on:

nimi: Jack, ikä: 29 Syöminen ruokaa. Puhuminen ihmisten kanssa. En rukoile. Olen ateisti.

Mielenkiintoisia artikkeleita...