<img height="1" width="1" src="https://www.facebook.com/tr?id=1272750026111903&amp;ev=PageView &amp;noscript=1">

Hvordan kotlin-ifisere eksisterende Java-klasser

Jarle Hansen | 01. oktober 2019

Programmeringsspråket Kotlin er noe flere og flere tar i bruk. Selv bruker jeg dette språket daglig i mitt oppdrag hos Skatteetaten, og opplever også en økende interesse for Oslo Kotlin Meetup, som jeg er med og arrangerer. 

Jeg har gjort meg mange erfaringer med Kotlin, og her skal du få et lite smart-tips for hvordan du kan ta i bruk en av de feteste funksjonalitetene for dette språket. Hint: hvis du vil bruke Java-biblioteker med Kotlin, bør du absolutt lese videre.

PS: les også om 5 grunner til å lære seg Kotlin i 2019

Extension Functions

Spør du meg om hva jeg synes er den kuleste funksjonaliteten i Kotlin, er svaret helt klart; extension functions. Årsaken til det er at denne funksjonen gjør det mulig å ta en eksisterende klasse, som feks fra et Java-bibliotek, og utvide med ekstra funksjoner.

La oss ta et enkelt eksempel på en extension function: vi ønsker legge til funksjonen toSnakeCase på String:
 
Når vi kaller denne nye funksjonen vil det se ut som den er del av String klassen:
 
Dette gjør at man kan ta et Java API (som kan det være litt tungvindt å bruke fra Kotlin), og forbedre det ved hjelp av extension functions. Vi gjorde nettopp dette med et prosjekt som heter MockWebServer. Her tok vi et eksisterende prosjekt og gjorde det mer naturlig å bruke fra Kotlin ved å lage funksjonen execute som extension function. Resultatet kan du se nærmere på her.
 
Det også mulig å kalle en Kotlin extension function fra Java, dette blir et statisk metodekall. Hvis vi fortsetter på eksempelet over, så ville kallet fra Java sett slik ut:
 

Koden blir mer lesbar

Vi har lært at extension functions kan gjøre koden mer lesbar og naturlig å bruke. Min erfaring er at dette er spesielt nyttig til å forbedre eksisterende Java APIer. Det er også lurt å være oppmerksom på å holde scopet på extension function så smalt som mulig. Hvis du feks skal lage en extension function på String-klassen og du gjør den public så vil den være tilgjengelig i hele prosjektet. Dette kan potensielt skape mye unødvendig støy.

Hvis du vil lære mer om extension functions se gjerne foredraget mitt fra JavaZone 2019.
Interessert i Kotlin? Bli med i vår gruppe Oslo Kotlin Meetup.
 
 
 
Er du et kodetalent? Se ledige stillinger her
Del på sosiale medier: