En Java, lorsque plusieurs références sont utilisées pour faire référence au même objet, celui-ci est communément appelé « alias ». Le problème avec l'alias se produit lorsqu'un utilisateur écrit sur un objet particulier et sur le propriétaire pour plusieurs autres références. , ne s'attend pas à ce que cet objet change. Ici, le code qui inclut l'alias peut rapidement prêter à confusion, et il est également très fastidieux à déboguer. Voyons comment fonctionne Java Alias.
PUBLICITÉ Cours populaire dans cette catégorie MAÎTRISÉE JAVA - Spécialisation | 78 séries de cours | 15 tests simulésCommencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Comme nous l'avons vu précédemment, l'alias se produit lorsque plusieurs références sont associées au même objet. Cela signifie également qu'il existe plusieurs alias pour un emplacement qui peuvent être modifiés, et ces alias particuliers ont plusieurs types.
Prenons un exemple. x et y sont deux noms de variables qui ont deux types, X et Y. Y étend X.
Y[] y = new Y[10]; X[] x = y; x[0] = new X(); Y[0].func1();
En mémoire également, ils pointent tous les deux vers le même endroit.
L'emplacement mémoire pointé est pointé par x ainsi que par y. Cependant, l'objet réel enregistré choisit la méthode à appeler pendant l'exécution.
Voyons un autre exemple.
Rectangle b1 = new Rectangle (0, 0, 50, 150); Rectangle b2 = b1;
b1 et b2 font référence au même objet, ou nous pouvons dire que l'objet donné a deux noms, tels que b1 et b2. Semblable à une personne qui a deux noms, les objets peuvent aussi avoir deux noms.
Lorsque deux variables alias sont présentes, les modifications qui provoquent une variable se reflètent également sur l'autre, comme indiqué ci-dessous.
System.out.println (b2.width); b1.grow (40, 40); System.out.println (b2.width);
En exécutant le code, vous verrez que les modifications qui ont été provoquées sur un rectangle se sont également produites dans le deuxième rectangle. C'est l'une des principales choses à noter pour Alias en Java.
Voici quelques exemples de programmes sur Java Alias.
Code :
//class X class X { //function 1 public void func1() { System.out.println("called sample function 1"); } } //Class Y that extends the class X class Y extends X { //function 1 public void func1() { System.out.println("called sample function 1"); } //function 2 public void func2() { System.out.println("called sample function 2"); } } //main class public class AliasExample { //main method public static void main(String[] args) { Y[] y = new Y[10]; X[] x = y; x[0] = new X(); y[0].func1(); } }
Sortie :
Comment cela se produit ? Que faut-il changer ? Est-il possible de résoudre ce problème ?
Oui !! La seule raison de cette exception est que Java gère les alias pendant l'exécution. Ce n'est que pendant l'exécution qu'il pourra savoir que le premier doit être un objet de Y au lieu de X.
//class X class X { //function 1 public void func1() { System.out.println("called sample function 1"); } } //Class Y that extends the class X class Y extends X { //function 1 public void func1() { System.out.println("called sample function 1"); } //function 2 public void func2() { System.out.println("called sample function 2"); } } //main class public class AliasExample { //main method public static void main(String[] args) { Y[] y = new Y[10]; X[] x = y; x[0] = new Y(); y[0].func1(); } }
Sortie :
Code :
//main class public class AliasExample { //main method public static void main(String[] args) { //create two different arrays with same value int a= 87; int b=87; //checks whether a and b are equal System.out.println(a == b); //assign b equal to a b=a; //checks whether a and b are equal System.out.println(a == b); } }
Sortie :
Que se passera-t-il si deux tableaux, a et b, sont utilisés à la place de variables entières ?
//main class public class AliasExample { //main method public static void main(String[] args) { //create two different arrays with same value int []a = {81, 54, 83}; int []b = {81, 54, 83}; //checks whether a and b are equal System.out.println(a == b); //assign b equal to a b=a; //checks whether a and b are equal System.out.println(a == b); } }
Sortie :
Dans ce programme, deux tableaux, a et b, sont créés dans la première étape. Ensuite, comme dans le programme ci-dessus, a et b vérifient s’ils sont égaux. Lors de l'exécution du code, on peut voir que le résultat de la première vérification est faux et que le résultat de la deuxième vérification est vrai. C'est parce que Java Alias fonctionne.
L'inconvénient de l'alias est lorsqu'un utilisateur écrit sur un objet spécifique et que le propriétaire, pour d'autres références, ne devine pas cet objet à modifier.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!