Postitus on vanem kui üks aasta, seega osa infost võib olla aegnud.
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.