Objekter i Kotlin

1. Introduksjon

Kotlin lånte mange ideer fra andre språk; en av slike konstruksjoner er gjenstand.

I denne raske artikkelen ser vi hva objektene er og hvordan de kan brukes.

2. Objekter i Kotlin

I Kotlin, som i nesten alle JVM-språk, er det begrepet a klasse som kjernen i den objektorienterte programmeringsmodellen. Kotlin introduserer konseptet med en gjenstand på toppen av det.

Mens en klasse beskriver strukturer som kan instanseres etter behov og som gir mulighet for så mange forekomster som nødvendig, en gjenstand representerer i stedet en enkelt statisk forekomst, og kan aldri ha mer eller mindre enn denne ene forekomsten.

Dette er nyttig for forskjellige teknikker, inkludert singleton-objekter og enkel innpakning av funksjonalitet for innkapsling:

objekt SimpleSingleton {val svar = 42; fun greet (name: String) = "Hei, $ name!" } assertEquals (42, SimpleSingleton.answer) assertEquals ("Hello, world!", SimpleSingleton.greet ("world"))

Objekter tilbyr også full støtte for synlighetsendringer, muliggjør skjuling og innkapsling av data som med andre klasser:

objekt Teller {private var count: Int = 0 fun currentCount () = count fun increment () {++ count}} Counter.increment () println (Counter.currentCount ()) println (Counter.count) // dette vil mislykkes å kompilere

I tillegg, objekter kan utvide klasser og implementere grensesnitt. Ved å gjøre dette er de effektivt enkeltforekomster av foreldreklasser, akkurat som forventet.

Dette kan være veldig nyttig i tilfeller der vi har en statsløs implementering og det ikke er behov for å opprette en ny forekomst hver gang - f.eks. Komparator:

objekt ReverseStringComparator: Comparator {overstyr moro sammenlign (o1: String, o2: String) = o1.reversed (). CompareTo (o2.reversed ())} valstrings = listOf ("Hello", "World") val sortedStrings = strings .sortedWith (ReverseStringComparator)

3. Hva er et ledsagerobjekt?

Ledsagerobjekter er i det vesentlige de samme som en standard gjenstand definisjon, bare med et par tilleggsfunksjoner for å gjøre utviklingen enklere.

Et ledsagerobjekt blir alltid erklært i en annen klasse. Selv om det kan ha et navn, trenger det ikke å ha et navn, i så fall har den automatisk navnet Kompanjong:

class OuterClass {companion object {// Equivalent to "companion object Companion"}}

Ledsagerobjekter gjør det mulig å få tilgang til medlemmene sine fra ledsagerklassen uten å spesifisere navnet.

Samtidig har man tilgang til synlige medlemmer fra utenfor klassen når de er foran et kursnavn:

klasse OuterClass {ledsagerobjekt {private val secret = "Du kan ikke se meg" val public = "Du kan se meg"} moro getSecretValue () = hemmelig} assertEquals ("Du kan se meg", OuterClass.public) assertEquals ( "Du kan ikke se meg", OuterClass.secret) // Kan ikke få tilgang til "hemmelig"

4. Statiske felt

Hovedbruken for ledsagende objekter er å erstatte statiske felt / metoder kjent fra Java. Disse feltene genereres imidlertid ikke automatisk som sådan i den resulterende klassefilen.

Hvis vi trenger at de skal genereres, må vi bruke @JvmStatic merknad på feltet i stedet, som deretter vil generere bytekoden som forventet:

klasse StaticClass {ledsagerobjekt {@JvmStatic val staticField = 42}}

Uten å gjøre dette, det statiske feltet staticField er ikke lett tilgjengelig fra Java-kode.

Når du legger til denne merknaden, genereres feltet nøyaktig etter behov for et standard statisk felt, og muliggjør full interoperabilitet fra Java om nødvendig.

Dette betyr at ovennevnte genererer en statisk metode getStaticField ()StaticClass klasse.

5. Konklusjon

Objekter i Kotlin legger til et helt ekstra lag som vi kan bruke, ytterligere effektivisering av koden og gjør det lettere å utvikle.

Ledsagerobjekter tar dette enda lenger, slik at du får renere kode som er lettere å vedlikeholde og jobbe med.

Som alltid kan kodebiter bli funnet på GitHub.


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