Video: Technology Stacks - Computer Science for Business Leaders 2016 2024
Det finns ett par saker du vill tänka på när du återanvändar namn i din Android-app. Du kan deklarera två Java-variabler -
bag1
och
bag2
- för att referera till två olika
BagOfCheese
-objekt. Det är okej. Men ibland har bara en variabel och återanvändning för det andra objektet lika bra som det visas här.
paket com. allmycode. a09_03;
importera android. Stöd. v7. app. AppCompatActivity;
importera android. os. Bunt;
importera android. widget. Textview;
import com. allmycode. a09_01. BagOfCheese;
public class MainActivity utökar AppCompatActivity {
TextView textView;
@Override
skyddad tomgång onCreate (Bundle savedInstanceState) {
super. onCreate (savedInstanceState);
setContentView (R. Layout. Activity_main);
textView = (TextView) findViewById (R. Id. TextView);
BagOfCheese väska = ny BagOfCheese ();
väska. kind = "Cheddar";
väska. vikt = 2,43;
väska. daysAged = 30;
väska. isDomestic = true;
Textview. setText ("");
Textview. Lägg till (väska. vänlig + "," + väska, vikt + "," +
väska. daysAged + "," + väska. isDemestic + " n");
väska = ny BagOfCheese ();
väska. kind = "Blue";
väska. vikt = 5 987;
väska. daysAged = 90;
väska. isDemestic = false;
Textview. Lägg till (väska. vänlig + "," + väska, vikt + "," +
väska. daysAged + "," + väska. isDemestic + " n");
}
}
I den här koden, när Java kör den andra
väskan = nya BagOfCheese ()
-satsen, har det gamla föremålet (påsen som innehåller cheddar) försvunnit. Utan väska (eller någon annan variabel) som hänvisar till det cheddarobjektet, finns det ingen möjlighet att din kod kan göra något med cheddarobjektet. Lyckligtvis, när du når den andra
väskan = nya BagOfCheese ()
uttalandet, är du klar med att göra allt du vill göra med den ursprungliga cheddar väskan. I detta fall är återanvändning av påsen variabel acceptabel.
När du återanvändar en variabel (som den enda variabeln
påse
ovan) gör du det med hjälp av ett uppdragsdeklaration, inte en initialisering. Med andra ord skriver du inte
BagOfCheese väska
en andra gång i din kod. Om du gör det ser du felmeddelanden i Android Studio-redigeraren.
För att vara smärtsamt exakt kan du faktiskt skriva
BagOfCheese väska
mer än en gång i samma kod.
Ingen av klasserna
BagOfCheese
är
slutlig
. Med andra ord tillåter klassens kod att du omfördelar värden till fälten i ett
BagOfCheese
objekt.Med denna information i åtanke kan du förkorta koden ovan med en enda rad, som visas här.
paket com. allmycode. a09_04;
importera android. Stöd. v7. app. AppCompatActivity;
importera android. os. Bunt;
importera android. widget. Textview;
import com. allmycode. a09_01. BagOfCheese;
public class MainActivity utökar AppCompatActivity {
TextView textView;
@Override
protected void onCreate (Bundle savedInstanceState) {
super. onCreate (savedInstanceState);
setContentView (R. Layout. Activity_main);
textView = (TextView) findViewById (R. Id. TextView);
BagOfCheese väska = ny BagOfCheese ();
väska. kind = "Cheddar";
väska. vikt = 2,43;
väska. daysAged = 30;
väska. isDomestic = true;
Textview. setText ("");
Textview. Lägg till (väska. vänlig + "," + väska, vikt + "," +
väska. daysAged + "," + väska. isDemestic + " n");
// väska = ny BagOfCheese ();
väska. kind = "Blue";
väska. vikt = 5 987;
väska. daysAged = 90;
väska. isDemestic = false;
Textview. Lägg till (väska. vänlig + "," + väska, vikt + "," +
väska. daysAged + "," + väska. isDemestic + " n");
}
}
Med det andra konstruktorns samtal i den här koden kommenterade, gör du inte variabeln
påse
för ett nytt objekt. I stället ekonomiserar du genom att tilldela nya värden till befintliga objektets fält.
I vissa situationer kan återanvändning av ett objekts fält vara effektivare (snabbare att exekvera) än att skapa ett nytt objekt. Men när du har ett val, är det en bra idé att skriva kod som speglar verkliga data. Om en faktisk väska inte ändras från cheddarost till ost, är det bättre att inte ändra ett
BagOfCheese
objektets typfält från "
Cheddar
" till "
Blue
”.