Operatore is
Con l’introduzione del polimorfismo potrebbe essere utile conoscere il tipo dell’oggetto con cui si ha a che fare. Ad esempio se dobbiamo utilizzare un determinato metodo o far riferimento ad uno specifico attributo della sottoclasse, avremo bisogno dell’operatore is.
Quest’operatore indica se l’oggetto è “istanza di” un determinato tipo. La sintassi prevede la seguente dichiarazione:
<riferimento> is <tipo_riferimento>
Vediamo nella pratica come si usa l'operatore is:
open class Persona //...
class Maschio : Persona()//...
class Femmina : Persona()//...
fun main(args: Array<String>) {
val a : Persona = Maschio()
if (a is Maschio) {
// Abbiamo un maschio
}
else if (a is Femmina) {
// Abbiamo una femmina
}
else {
// Abbiamo una persona generica
}
}
Naturalmente è anche possibile usare il costrutto when:
when(a) {
is Maschio -> {
// Abbiamo un maschio
}
is Femmina -> {
// Abbiamo una femmina
}
else -> {
// Abbiamo una persona generica
}
}
Come si nota l'operatore is è molto simile all'operatore in visto nella lezione 3.