Lær Java for Android Development Kontroller objekttype med Instanceof

Denne raske leksjonen i vår Lær Java for Android Development serien viser deg hvordan du betinget sjekker typen av et objekt ved hjelp av tilfelle av søkeord i Java.

Grunnleggende conditionals

Vi snakket om mange av de grunnleggende Java betingede uttalelsene i Lær Java for Android Development: Java Syntax opplæringen. For eksempel gir Java alle de typiske betingede operatørene man kan forvente, inkludert de som skal sjekke likestilling, ulikhet, større enn mindre enn osv..

Her er noen Java-koder som kontrollerer verdien av en numerisk variabel (kalt iVar) og gir forskjellige kodebaner avhengig av om verdien av iVar er null, negativ eller positiv:

 hvis (iVar == 0) // variabel er null annet hvis (iVar> 0) // variabel er et positivt tall annet // variabel er et negativt tall 

Bruke instanceof i betingede uttalelser

La oss nå se på en bestemt Java-funksjon som du også kan bruke i betingede setninger. Fordi Java er et fullt objektorientert språk, kan du også teste om et objekt er av en bestemt type (en forekomst av en bestemt klasse) betinget med å bruke tilfelle av søkeord. De tilfelle av Søkeord er en boolsk operatør, brukt som en vanlig matematisk boolsk betinget operatør for å generere et sant eller et falskt resultat.

La oss se på et raskt eksempel. La oss anta at vi har en foreldersklasse kalt Fish, som har to avledede undergrupper: SaltwaterFish og FreshwaterFish. Vi kunne bruke tilfelle av søkeord for å teste om et objekt er en forekomst av en bestemt klasse (eller underklasse) etter navn:

 SaltwaterFish nemo = new SaltwaterFish (); hvis (nemo instanceof Fish) // vi har en slags fisk // kan være en fisk (foreldreklasse) eller underklasse av noe slag, som // saltwaterFish eller FreshwaterFish. hvis (nemo instanceof SaltwaterFish) // Nemo er en saltvannsfisk!  

Bruke instanceof i Android Development

Så når det gjelder Android utvikling, når er det tilfelle av funksjonen nyttig? Vel, for det første, er Android SDK-klassene organisert i typisk objektorientert mote: hierarkisk. For eksempel er klassene som Button, TextView og CheckBox, som representerer forskjellige typer brukergrensesnittkontroller, avledet fra samme foreldreklasse: View. Derfor, hvis du ønsket å lage en metode som tok en View-parameter, men hadde forskjellig oppførsel avhengig av den spesifikke typen kontroll, kan du bruke tilfelle av mekanisme for å sjekke innkommende parameter og bestemme nøyaktig hvilken type visningskontroll som var blitt sendt inn.

Følgende metode tar for eksempel en visningsparameter, slik at du kan passere i en hvilken som helst type visning, men spesifiserer spesifikt TekstView-kontroller for spesiell behandling:

 void checkforTextView (Vis v) if (v instanceof TextView) // Dette er en TextView-kontroll ellers // Dette er ikke en TextView-kontroll 

I dette eksemplet kan vi fortsette å ringe til en metode som bare er gyldig for et TextView-objekt og ikke det generelle Vis-objektet. I så fall vil vi sannsynligvis kaste Vis parameteren til en TextView før du foretar et slikt anrop. Hvis vi imidlertid ønsket å ringe som er tilgjengelig i alle Vis objekter, men oppfører seg annerledes i TextView-objekter, er det ikke nødvendig å teste for dette. Java vil håndtere å ringe til riktig versjon av metoden som er spesifikk for TextView. Dette er en av de store funksjonene i objektorientert programmering: Den mest hensiktsmessige versjonen av en gitt metode kalles.

Konklusjon

I denne korte leksjonen har du lært hvordan du bruker tilfelle av Java-søkeord for å kontrollere typen av et objekt ved kjøretid og gi betingede kodebaner basert på resultatet. Dette er en praktisk Java-funksjon som Android-utviklere ofte stoler på, siden Android SDK er organisert hierarkisk.

Om forfatterne

Mobilutviklere Lauren Darcey og Shane Conder har medforfatter flere bøker om Android-utvikling: en grundig programmeringsbok med tittel Android Wireless Application Development og Sams TeachYourself Android Application Development i 24 timer. Når de ikke skriver, bruker de sin tid på å utvikle mobil programvare hos deres firma og tilby konsulenttjenester. De kan nås via e-post til [email protected], via bloggen deres på androidbook.blogspot.com, og på Twitter @androidwireless.

Trenger du flere hjelpeskrivende Android-apper? Se våre nyeste bøker og ressurser!