Vidéo: TP Android n°2 : création d'une application 2024
Il y a plusieurs choses auxquelles vous devez penser lorsque vous réutilisez des noms dans votre application Android. Vous pouvez déclarer deux variables Java -
bag1
et
bag2
- pour désigner deux objets
BagOfCheese
différents. C'est très bien. Mais parfois, avoir une seule variable et la réutiliser pour le second objet fonctionne tout aussi bien, comme montré ici.
package com. allmycode. a09_03;
importer Android. soutien. v7. app. AppCompatActivity;
importer Android. os. Paquet;
importer Android. widget. Affichage;
import com. allmycode. a09_01. BagOfCheese;
public class MainActivity étend AppCompatActivity {
TextView textView;
@Override
protected void onCreate (Regrouper savedInstanceState) {
super. onCreate (savedInstanceState);
setContentView (disposition R., activité_main);
textView = (TextView) findViewById (id de R. textView);
BagOfCheese bag = nouveau BagOfCheese ();
sac. genre = "Cheddar";
sac. poids = 2. 43;
sac. joursAged = 30;
sac. isDomestic = true;
textView. Définir le texte("");
textView. ajouter (sac.type + "," + sac. poids + "," +
sac.jours + "," + sac.estDomestic + " n");
bag = new BagOfCheese ();
sac. genre = "Bleu";
sac. poids = 5,987;
sac. joursAged = 90;
sac. isDomestic = faux;
textView. ajouter (sac.type + "," + sac. poids + "," +
sac.jours + "," + sac.estDomestic + " n");
}
}
Dans ce code, lorsque Java exécute la deuxième instruction
, l'ancien objet (le sac contenant du cheddar) a disparu. Sans sac (ou toute autre variable) se référant à cet objet cheddar, votre code ne peut rien faire avec l'objet cheddar. Heureusement, au moment où vous atteignez la deuxième <= bag = new BagOfCheese ()
déclaration, vous avez terminé tout ce que vous voulez faire avec le sac de cheddar original. Dans ce cas, la réutilisation de la variable de sac est acceptable.
Lorsque vous réutilisez une variable (comme la variable
bag
ci-dessus), vous le faites en utilisant une instruction d'affectation, pas une initialisation. En d'autres termes, vous n'écrivez pas
BagOfCheese bag
une deuxième fois dans votre code. Si vous le faites, vous voyez des messages d'erreur dans l'éditeur Android Studio.
Pour être extrêmement précis, vous pouvez écrire plus d'une fois
BagOfCheese bag
dans le même morceau de code.
Aucun des champs de la classe
BagOfCheese
n'est
final
. En d'autres termes, le code de la classe vous permet de réaffecter des valeurs aux champs d'un objet
BagOfCheese
.Avec cette information à l'esprit, vous pouvez raccourcir le code ci-dessus d'une ligne supplémentaire, comme indiqué ici.
package com. allmycode. a09_04;
importer Android. soutien. v7. app. AppCompatActivity;
importer Android. os. Paquet;
importer Android. widget. Affichage;
import com. allmycode. a09_01. BagOfCheese;
public class MainActivity étend AppCompatActivity {
TextView textView;
@Override
void protégé onCreate (Bundle savedInstanceState) {
super. onCreate (savedInstanceState);
setContentView (disposition R., activité_main);
textView = (TextView) findViewById (id de R. textView);
BagOfCheese bag = nouveau BagOfCheese ();
sac. genre = "Cheddar";
sac. poids = 2. 43;
sac. joursAged = 30;
sac. isDomestic = true;
textView. Définir le texte("");
textView. ajouter (sac.type + "," + sac. poids + "," +
sac.jours + "," + sac.estDomestic + " n");
// bag = new BagOfCheese ();
sac. genre = "Bleu";
sac. poids = 5,987;
sac. joursAged = 90;
sac. isDomestic = faux;
textView. ajouter (sac.type + "," + sac. poids + "," +
sac.jours + "," + sac.estDomestic + " n");
}
}
Avec l'appel du second constructeur dans ce code mis en commentaire, vous ne faites pas référence à la variable
sac
par un nouvel objet. Au lieu de cela, vous économisez en affectant de nouvelles valeurs aux champs de l'objet existant.
Dans certaines situations, la réutilisation des champs d'un objet peut être plus efficace (plus rapide à exécuter) que la création d'un nouvel objet. Mais chaque fois que vous avez le choix, c'est une bonne idée d'écrire du code qui reflète des données réelles. Si le contenu d'un sac ne passe pas du fromage cheddar au fromage bleu, il serait préférable de ne pas changer le champ de type d'objet
BagOfCheese
de "
Cheddar
" à "
Bleu
".