|
|
Notes sur les handlesLes handles servent a "referencer" un objet. Par analogie avec les pointeurs utilises en C/C++, on peut dire qu'un handle "pointe" vers un objet. Il y a d'ailleurs de tres nombreuses analogies (sur le fond et sur la forme) entre les handles de JAVA et les pointeurs du C++. Toutefois, de par leur nature, les handles de JAVA sont differents des pointeurs du C++. Considerons le programme suivant: public class handle { public static void main (String[] argv) { // on declare deux handles Test handle_1; Test handle_2; // on instancie deux objets // handle_1 pointe vers le premier objet // handle_2 pointe vers le deuxieme objet handle_1 = new Test(1); handle_2 = new Test(2); System.out.println("\nPremier test:\n"); handle_1.Afficher_Valeur(); handle_2.Afficher_Valeur(); handle_1 = handle_2; handle_2.Set_Valeur(3); System.out.println("\nDeuxieme test:\n"); handle_1.Afficher_Valeur(); handle_2.Afficher_Valeur(); } } class Test { int i; Test (int val) { i = val; } void Afficher_Valeur() { System.out.println(i); } void Set_Valeur(int val) { i = val; } } A l'execution ce programme affiche: Premier test: 1 2 Deuxieme test: 3 3 Entre l'affichage des tests 1 et 2, il y a les lignes: ... handle_1 = handle_2; handle_2.Set_Valeur(3); ... La premiere ligne peut etre traduite par: Le handle "handle_1" pointe sur l'objet reference par "handle_2". Autrement dit, les handles "handle_1" et "handle_2" pointent vers le meme objet. Que devient l'objet anciennement pointe par "handle_1" ? Il n'est plus reference, par consequent il n'est plus accessible. Le garbage collector |
|