Kotlin - Generici

Come Java, Kotlin fornisce un ordine più elevato di digitazione delle variabili chiamato Generics. In questo capitolo, impareremo come Kotlin implementa Generics e come come sviluppatore possiamo usare quelle funzionalità fornite all'interno della libreria generics. Per quanto riguarda l'implementazione, i generics sono abbastanza simili a Java, ma lo sviluppatore Kotlin ha introdotto due nuove parole chiave“out” e “in” per rendere i codici Kotlin più leggibili e facili per lo sviluppatore.

In Kotlin, una classe e un tipo sono concetti completamente diversi. Come nell'esempio, List è una classe in Kotlin, mentre List <String> è un tipo in Kotlin. Il seguente esempio illustra come i generici vengono implementati in Kotlin.

fun main(args: Array<String>) {
   val integer: Int = 1
   val number: Number = integer
   print(number)
}

Nel codice sopra, abbiamo dichiarato un "intero" e successivamente abbiamo assegnato quella variabile a una variabile numerica. Ciò è possibile perché "Int" è una sottoclasse della classe Number, quindi la conversione del tipo avviene automaticamente in fase di esecuzione e produce l'output come "1".

Impariamo qualcosa di più sui generici in Kotlin. È meglio scegliere il tipo di dati generico ogni volta che non siamo sicuri del tipo di dati che utilizzeremo nell'applicazione. Generalmente, in Kotlin i generici sono definiti da<T>dove "T" sta per modello, che può essere determinato dinamicamente dal compilatore Kotlin. Nel seguente esempio, vedremo come utilizzare tipi di dati generici nel linguaggio di programmazione Kotlin.

fun main(args: Array<String>) {
   var objet = genericsExample<String>("JAVA")
   var objet1 = genericsExample<Int>(10)
}
class genericsExample<T>(input:T) {
   init {
      println("I am getting called with the value "+input)
   }
}

Nella parte di codice sopra, stiamo creando una classe con un tipo restituito generico, che è rappresentato come <T>. Dai un'occhiata al metodo principale, in cui abbiamo definito dinamicamente il suo valore in fase di esecuzione dimostrando il tipo di valore, durante la creazione dell'oggetto di questa classe. Questo è il modo in cui i generici vengono interpretati dal compilatore Kotlin. Otterremo il seguente output nel browser, una volta eseguito questo codice nel nostro campo di codifica.

I am getting called with the value JAVA
I am getting called with the value 10

Quando vogliamo assegnare il tipo generico a uno qualsiasi dei suoi super tipi, dobbiamo usare la parola chiave "out" e quando vogliamo assegnare il tipo generico a uno qualsiasi dei suoi sottotipi, dobbiamo usare "in" parola chiave. Nel seguente esempio, utilizzeremo la parola chiave "out". Allo stesso modo, puoi provare a utilizzare la parola chiave "in".

fun main(args: Array<String>) {
   var objet1 = genericsExample<Int>(10)
   var object2 = genericsExample<Double>(10.00)
   println(objet1)
   println(object2)
}
class genericsExample<out T>(input:T) {
   init {
      println("I am getting called with the value "+input)
   }
}

Il codice precedente produrrà il seguente output nel browser.

I am getting called with the value 10
I am getting called with the value 10.0
[email protected]
[email protected]