Lär dig Java for Android Development Kontrollera objekttyp med Instanceof

Denna snabba lektion i vår Lär dig Java för Android-utveckling serien visar hur du vill konditionera typ av objekt objektivt med instans av sökord i Java.

Grundläggande conditionals

Vi pratade om många av de grundläggande Java villkorliga uttalandena i Lär dig Java för Android-utveckling: Java Syntax handledning. Till exempel tillhandahåller Java alla de typiska villkorliga operatörerna man kan förvänta sig, inklusive de som söker efter jämlikhet, ojämlikhet, större än mindre än etc.

Här är en del Java-kod som kontrollerar värdet på en numerisk variabel (kallad iVar) och tillhandahåller olika kodvägar beroende på om värdet av iVar är noll, negativ eller positiv:

 om (iVar == 0) // variabeln är noll annars om (iVar> 0) // variabel är ett positivt tal annars // variabel är ett negativt tal 

Använda instanceof i villkorliga uttalanden

Låt oss nu titta på en specifik Java-funktion som du också kan använda i villkorliga uttalanden. Eftersom Java är ett fullständigt objektorienterat språk kan du också testa om ett objekt är av en viss typ (en förekomst av en specifik klass) med villkoret att använda instans av nyckelord. De instans av sökord är en booleskt operatör, som används som en vanlig matematisk Boolean villkorlig operatör för att generera ett sannt eller ett felaktigt resultat.

Låt oss titta på ett snabbt exempel. Låt oss anta att vi har en föräldraklass som heter Fish, som har två härledda underklasser: SaltwaterFish och FreshwaterFish. Vi kunde använda instans av sökord för att testa om ett objekt är en förekomst av en specifik klass (eller underklass) med namn:

 SaltwaterFish nemo = nya SaltwaterFish (); om (nemo instanceof Fish) // vi har något slags fisk // kan vara en fisk (förälderklass) eller underklass av något slag, som // saltwaterFish eller FreshwaterFish. om (nemo exempel av saltvattenfisk) // Nemo är en saltvattenfisk!  

Använda instanceof i Android Development

Så när det gäller Android utveckling, när är det instans av funktionen användbar? Tja, för att börja med är Android SDK-klasserna organiserade i typiskt objektorienterat sätt: hierarkiskt. Till exempel kommer klasserna som Button, TextView och CheckBox, som representerar olika typer av användargränssnittskontroller, från samma föräldraklass: Visa. Om du sålde att skapa en metod som tog en View-parameter, men hade olika beteenden beroende på den specifika typen av kontroll, kan du använda instans av mekanism för att kontrollera den inkommande parametern och bestämma exakt vilken typ av visningskontroll som hade överförts.

Följande metod tar till exempel en View-parameter som låter dig passera i vilken typ av Visa som helst, men specifikt utser TextView-kontroller för särskild bearbetning:

 void checkforTextView (Visa v) om (v instanceof TextView) // Detta är en TextView-kontroll annars // Detta är inte en TextView-kontroll 

I det här exemplet kan vi fortsätta att ringa till en metod som endast är giltig för ett TextView-objekt och inte det generiska visningsobjektet. I så fall skulle vi sannolikt kunna visa visningsparametern i en TextView innan du gör ett sådant samtal. Om vi ​​emellertid ville ringa ett samtal som är tillgängligt i alla Visa-objekt, men uppför sig annorlunda i TextView-objekt behöver det inte testas för detta. Java hanterar att ringa den lämpliga versionen av metoden som är specifik för TextView. Detta är en av de stora egenskaperna hos objektorienterad programmering: den mest lämpliga versionen av en given metod kallas.

Slutsats

I denna snabba lektion har du lärt dig hur du använder instans av Java-nyckelord för att kontrollera typen av ett objekt vid körning och tillhandahålla villkorliga kodvägar baserat på resultatet. Det här är en praktisk Java-funktion som Android-utvecklare ofta litar på, eftersom Android SDK är organiserad hierarkiskt.

Om Författarna

Mobila utvecklare Lauren Darcey och Shane Conder har medverkat flera böcker om Android-utveckling: en fördjupad programmeringsbok med titeln Android Wireless Application Development och Sams TeachYourself Android Application Development inom 24 timmar. När de inte skriver, spenderar de sin tid på att utveckla mobil mjukvara hos sina företag och tillhandahålla konsulttjänster. De kan nås via e-post till [email protected], via deras blogg på androidbook.blogspot.com, och på Twitter @ androidwireless.

Behöver du hjälp med att skriva Android Apps? Kolla in våra senaste böcker och resurser!