Video: Learn Java Programming with Beginners Tutorial 2024
Er zijn een paar dingen waar u aan wilt denken bij het hergebruik van namen in uw Android-app. U kunt twee Java-variabelen declareren -
bag1
en
bag2
- om te verwijzen naar twee verschillende
BagOfCheese
-objecten. Dat is prima. Maar soms werkt het hebben van slechts één variabele en het opnieuw gebruiken voor het tweede object net zo goed, zoals hier wordt weergegeven.
pakket com. allmycode. a09_03;
importeer android. ondersteuning. v7. app. AppCompatActivity;
importeer android. os. Bundel;
importeer android. widget. Tekstweergave;
com. allmycode. a09_01. BagOfCheese;
openbare klasse MainActivity breidt AppCompatActivity uit {
TextView-tekstView;
@Override
protected void onCreate (Bundle savedInstanceState) {
super. onCreate (savedInstanceState);
setContentView (r.lay-out.activiteit_hoofd);
textView = (TextView) findViewById (R. Id. TextView);
BagOfCheese bag = new BagOfCheese ();
zak. soort = "Cheddar";
zak. gewicht = 2. 43;
zak. daysAged = 30;
zak. isDomestic = true;
TextView. setText ("");
TextView. toevoegen (bag. soort + "," + zak. gewicht + "," +
zak. dagenAged + "," + zak. isDomestic + " n");
zak = nieuwe BagOfCheese ();
zak. soort = "Blauw";
zak. gewicht = 5. 987;
zak. daysAged = 90;
zak. isDomestic = false;
TextView. toevoegen (bag. soort + "," + zak. gewicht + "," +
zak. dagenAged + "," + zak. isDomestic + " n");
}
}
In deze code, wanneer Java de tweede
bag = new BagOfCheese ()
-instructie uitvoert, is het oude object (de zak met cheddar) verdwenen. Zonder tas (of een andere variabele) verwijzend naar dat cheddar-object, kan je code niks doen met het cheddar-object. Gelukkig, tegen de tijd dat je de tweede
zak bereikt = nieuwe BagOfCheese ()
verklaring, ben je klaar met alles doen wat je wilt doen met de originele Cheddar tas. In dit geval is hergebruik van de variabele van de zak acceptabel.
Wanneer u een variabele (zoals de enige en enige
zak
variabele hierboven) opnieuw gebruikt, doet u dat met behulp van een toewijzingsinstructie, niet een initialisatie. Met andere woorden, u schrijft
BagOfCheese-tas
niet een tweede keer in uw code. Als u dit doet, ziet u foutberichten in de Android Studio-editor.
Om pijnlijk precies te zijn, kunt u in dezelfde code
BagOfCheese-tas
meer dan eens schrijven.
Geen van de
BagOfCheese
-klasse-velden is
definitief
. Met andere woorden, met de code van de klasse kunt u waarden opnieuw toewijzen aan de velden in een
BagOfCheese
-object.Met deze informatie in gedachten kunt u de bovenstaande code met een volgende regel inkorten, zoals hier wordt weergegeven.
pakket com. allmycode. a09_04;
importeer android. ondersteuning. v7. app. AppCompatActivity;
importeer android. os. Bundel;
importeer android. widget. Tekstweergave;
com. allmycode. a09_01. BagOfCheese;
openbare klasse MainActivity breidt AppCompatActivity uit {
TextView-tekstView;
@Override
beschermde ongeldig onCreate (bundel savedInstanceState) {
super. onCreate (savedInstanceState);
setContentView (r.lay-out.activiteit_hoofd);
textView = (TextView) findViewById (R. Id. TextView);
BagOfCheese bag = new BagOfCheese ();
zak. soort = "Cheddar";
zak. gewicht = 2. 43;
zak. daysAged = 30;
zak. isDomestic = true;
TextView. setText ("");
TextView. toevoegen (bag. soort + "," + zak. gewicht + "," +
zak. dagenAged + "," + zak. isDomestic + " n");
// bag = new BagOfCheese ();
zak. soort = "Blauw";
zak. gewicht = 5. 987;
zak. daysAged = 90;
zak. isDomestic = false;
TextView. toevoegen (bag. soort + "," + zak. gewicht + "," +
zak. dagenAged + "," + zak. isDomestic + " n");
}
}
Met de tweede aanroep van de constructor waarin deze code is weggelaten, laat u de variabele
zak
niet verwijzen naar een nieuw object. In plaats daarvan bezuinigt u door nieuwe waarden toe te wijzen aan de velden van het bestaande object.
In sommige situaties kan het hergebruiken van de velden van een object efficiënter (sneller om uit te voeren) zijn dan het maken van een nieuw object. Maar wanneer je een keuze hebt, is het een goed idee om code te schrijven die echte gegevens weerspiegelt. Als de inhoud van een werkelijke zak niet verandert van Cheddar naar blauwe kaas, is het beter om het veld
BagOfCheese
van een object
Cheddar
niet te wijzigen in
“.