Kotlini invoke() operaator

Joel Edenberg

Kotlinis on olemas operaator nimega invoke. Kui klassis defineerida see operaator, siis on koods võimalik kutsuda klassi instantse välja ilma meetodi nime defineerimata. Kui klass teeb ainult ühte tegevust ja klassi enda nimi on piisavalt arusaadav, võib kaaluda invoke() operaatori defineerimist.

Näiteks:

class Teade(val saaja: String) {
    operator fun invoke(teade: String) = println("$saaja: $teade!")
}

val teade = Teade("Toomas")
teade("tere")  // Prindib "Toomas: tere!"

Ka Javas defineeritud klassidele on võimalik invoke() operaator defineerida, kasutades laiendusfunktsiooni ja määrates, et milline meetod välja kutsutakse:

operator fun JavaTeenus.invoke(file: File) = parse(file)

Seejärel saab teenust kasutada sarnaselt esimesele näitele.