Questa rapida lezione nel nostro Impara Java per lo sviluppo Android serie ti mostra come controllare in modo condizionale il tipo di un oggetto usando il instanceof
parola chiave in Java.
Abbiamo parlato di molte delle dichiarazioni condizionali Java di base nel Impara Java per lo sviluppo Android: Sintassi Java tutorial. Ad esempio, Java fornisce tutti gli operatori condizionali tipici che ci si potrebbe aspettare, compresi quelli per verificare l'uguaglianza, la disuguaglianza, maggiore di, minore di, ecc..
Ecco un codice Java che controlla il valore di una variabile numerica (chiamato iVar) e fornisce percorsi di codice diversi a seconda che il valore di iVar sia zero, negativo o positivo:
if (iVar == 0) // variable is zero else if (iVar> 0) // variable è un numero positivo else // variable è un numero negativo
Ora esaminiamo una specifica funzionalità Java che è possibile utilizzare anche in istruzioni condizionali. Poiché Java è un linguaggio completamente orientato agli oggetti, è anche possibile verificare se un oggetto è di un tipo specifico (un'istanza di una classe specifica) che utilizza instanceof
parola chiave. Il instanceof
keyword è un operatore booleano, usato come un normale operatore matematico booleano per generare un risultato vero o falso.
Diamo un'occhiata ad un rapido esempio. Supponiamo di avere una classe genitore chiamata Fish, che ha due sottoclassi derivate: SaltwaterFish e FreshwaterFish. Potremmo usare il instanceof
parola chiave per verificare se un oggetto è un'istanza di una classe specifica (o sottoclasse) per nome:
SaltwaterFish nemo = new SaltwaterFish (); se (nemo instanceof Fish) // abbiamo una specie di pesce // potrebbe essere un pesce (classe genitore), o sottoclasse di qualche tipo, come // SaltwaterFish o FreshwaterFish. if (nemo instanceof SaltwaterFish) // Nemo è un pesce di acqua salata!
Quindi, quando si tratta di sviluppo Android, quando è il instanceof
caratteristica utile? Bene, per cominciare, le classi di Android SDK sono organizzate in modo tipico orientato agli oggetti: gerarchicamente. Ad esempio, le classi come Button, TextView e CheckBox, che rappresentano diversi tipi di controlli dell'interfaccia utente, sono tutte derivate dalla stessa classe genitore: View. Pertanto, se si desidera creare un metodo che utilizza un parametro View ma presenta un comportamento diverso a seconda del tipo specifico di controllo, è possibile utilizzare il metodo instanceof
meccanismo per controllare il parametro in ingresso e determinare esattamente quale tipo di controllo della vista è stato passato.
Ad esempio, il seguente metodo accetta un parametro View, che consente di passare in qualsiasi tipo di View, ma in particolare sceglie i controlli TextView per l'elaborazione speciale:
void checkforTextView (View v) if (v instanceof TextView) // Questo è un controllo TextView else // Questo non è un controllo TextView
In questo esempio, potremmo continuare effettuando una chiamata a un metodo che è valido solo per un oggetto TextView e non per l'oggetto View generico, nel qual caso, probabilmente lanciamo il parametro View su TextView prima di effettuare tale chiamata. Se, tuttavia, volevamo effettuare una chiamata disponibile in tutti gli oggetti View, ma che si comporta diversamente negli oggetti TextView, non è necessario verificarne la presenza. Java gestirà chiamando la versione appropriata del metodo specifico per TextView. Questa è una delle grandi caratteristiche della programmazione orientata agli oggetti: viene chiamata la versione più appropriata di un determinato metodo.
In questa breve lezione hai imparato come usare il instanceof
Parola chiave Java per verificare il tipo di un oggetto in fase di esecuzione e fornire percorsi di codice condizionale in base al risultato. Questa è una comoda funzione Java su cui gli sviluppatori Android fanno spesso affidamento, dal momento che l'SDK di Android è organizzato in modo gerarchico.
Gli sviluppatori mobili Lauren Darcey e Shane Conder hanno coautore diversi libri sullo sviluppo di Android: un libro di programmazione approfondito intitolato Sviluppo di applicazioni wireless Android e Sams TeachYourself Sviluppo di applicazioni Android in 24 ore. Quando non scrivono, passano il loro tempo a sviluppare software mobile presso la loro azienda ea fornire servizi di consulenza. Possono essere contattati via email a [email protected], tramite il loro blog su androidbook.blogspot.com e su Twitter @androidwireless.