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
genericsExample@28d93b30
genericsExample@1b6d3586