p2 mais la nouvelle valeur est perdue à la sortie de modif(). Il faut donc procéder ainsi :
static void modif(element p1,element p2) {
p1.valeur=p2.valeur;
}
Cette fois c’est le contenu des valeurs dans la zone mémoire référencée qui est affecté, et vous obtenez le résultat
attendu.
f. La valeur null
Il se peut que vous n’ayez pas besoin tout de suite de créer une référence sur un enregistrement, mais que vous
vouliez éviter d’y accéder par inadvertance. Dans ce cas, au lieu de créer une référence avec new, vous pouvez lui
affecter une valeur appelée null. Cette valeur signifie que la variable a été déclarée mais n’a pas d’objet instancié
(terme expliqué dans le chapitre suivant) : vous ne lui avez pas encore affecté d’enregistrement. Du coup, vous
pouvez déjà tester la variable ellemême avant de tester les champs qu’elle contient.
Dans l’exemple suivant modifié, tarticle contient toujours une variable de type tfabricant. Mais elle ne recevra un
enregistrement que plus tard dans le programme. En attendant, le champ fab reçoit une valeur nulle, signifiant que
l’article n’a pas encore de fabricant référencé.
class tfabricant {
public String ref;
}
class tarticle {
public String ref;
public tfabricant fab=null;
}
class chap8_refstruct2 {
public static void main(String[] args) {
tarticle article=new tarticle();
article.ref="Art001_01";
if(article.fab!=null)
System.out.println(article.fab.ref);
else
System.out.println("Pas de fabricant pour cet article");
}
}
- 11 -
© ENI Editions - All rigths reserved - Jonifar lina
173
static void modif(element p1,element p2) {
p1.valeur=p2.valeur;
}
Cette fois c’est le contenu des valeurs dans la zone mémoire référencée qui est affecté, et vous obtenez le résultat
attendu.
f. La valeur null
Il se peut que vous n’ayez pas besoin tout de suite de créer une référence sur un enregistrement, mais que vous
vouliez éviter d’y accéder par inadvertance. Dans ce cas, au lieu de créer une référence avec new, vous pouvez lui
affecter une valeur appelée null. Cette valeur signifie que la variable a été déclarée mais n’a pas d’objet instancié
(terme expliqué dans le chapitre suivant) : vous ne lui avez pas encore affecté d’enregistrement. Du coup, vous
pouvez déjà tester la variable ellemême avant de tester les champs qu’elle contient.
Dans l’exemple suivant modifié, tarticle contient toujours une variable de type tfabricant. Mais elle ne recevra un
enregistrement que plus tard dans le programme. En attendant, le champ fab reçoit une valeur nulle, signifiant que
l’article n’a pas encore de fabricant référencé.
class tfabricant {
public String ref;
}
class tarticle {
public String ref;
public tfabricant fab=null;
}
class chap8_refstruct2 {
public static void main(String[] args) {
tarticle article=new tarticle();
article.ref="Art001_01";
if(article.fab!=null)
System.out.println(article.fab.ref);
else
System.out.println("Pas de fabricant pour cet article");
}
}
- 11 -
© ENI Editions - All rigths reserved - Jonifar lina
173
