Metodi statici e singleton ed inizializzatori

Spesso, nella programmazione, ci imbattiamo in uno dei tre seguenti casi:

  • Dobbiamo realizzare un singleton, una classe che ha lo scopo di garantire che di una determinata classe venga creata una e una sola istanza, e di fornire un punto di accesso globale a tale istanza.
  • Realizzare un metodo, una proprietà e/o una variabile non legata a nessuna istanza ma che è riconducibile, in qualche modo, ad una determinato oggetto
  • Realizzare un oggetto in maniera ligth, senza realizzare una nuova classe.

Kotlin per tutte queste esigenze introdotto gli oggetti. Mentre in Java (ed in molti altri linguaggi) questo richiederebbe un sacco, ma un sacco di codice. Kotlin semplifica il tutto e tramite la keyword object è possible realizzare un oggetto e istanziarlo in maniera automatica e statica:

object UnivoqueId {

private var lastId: Int = 0

fun generateNextId() : Int {

return lastId++

}

val nextId: Int

get() = lastId++

}

Questo quindi ci permette di realizzare i metodi statici, ma per una compatibilità con Java e la JVM Kotlin permette di indicare i metodi statici con la keyword companion che precede la parola chiave object:

class Televisori(var modello: String, var marca: String, var pollici: Int) {

var id: Int = 0

init {

this.id = lastId++

}

companion object {

private var lastId = 0

}

}

results matching ""

    No results matching ""