Wenn in Java mehrere Referenzen verwendet werden, um auf dasselbe Objekt zu verweisen, wird dies üblicherweise als „Alias“ bezeichnet. Das Problem mit Aliasing besteht darin, dass ein Benutzer für mehrere andere Referenzen auf ein bestimmtes Objekt und den Eigentümer schreibt , erwartet nicht, dass sich dieses Objekt ändert. Hier kann der Code, der Aliasing enthält, schnell verwirrend werden und außerdem ist das Debuggen sehr mühsam. Lassen Sie uns sehen, wie Java Alias funktioniert.
WERBUNG Beliebter Kurs in dieser Kategorie JAVA MASTERY - Spezialisierung | 78 Kursreihe | 15 ProbetestsStarten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Wie wir bereits besprochen haben, tritt Aliasing auf, wenn mehrere Referenzen demselben Objekt zugeordnet sind. Dies bedeutet auch, dass es mehrere Aliase für einen Standort gibt, die geändert werden können, und diese bestimmten Aliase haben mehrere Typen.
Nehmen wir ein Beispiel. x und y sind zwei Variablennamen, die zwei Typen haben, X und Y. Y erweitert X.
Y[] y = new Y[10]; X[] x = y; x[0] = new X(); Y[0].func1();
Auch in der Erinnerung zeigen beide auf denselben Ort.
Der Speicherort, auf den gezeigt wird, wird sowohl durch x als auch durch y angezeigt. Das tatsächlich gespeicherte Objekt wählt jedoch aus, welche Methode zur Laufzeit aufgerufen werden soll.
Sehen wir uns ein weiteres Beispiel an.
Rectangle b1 = new Rectangle (0, 0, 50, 150); Rectangle b2 = b1;
Sowohl „b1“ als auch „b2“ beziehen sich auf dasselbe Objekt, oder wir können sagen, dass das gegebene Objekt zwei Namen hat, z. B. „b1“ und „b2“. Ähnlich wie eine Person zwei Namen hat, können auch Objekte zwei Namen haben.
Wenn zwei Alias-Variablen vorhanden sind, wirken sich Änderungen, die eine Variable verursachen, auch auf die andere aus, wie unten gezeigt.
System.out.println (b2.width); b1.grow (40, 40); System.out.println (b2.width);
Beim Ausführen des Codes werden Sie sehen, dass die Änderungen, die an einem Rechteck verursacht wurden, auch im zweiten Rechteck aufgetreten sind. Dies ist eines der wichtigsten Dinge, die bei Alias in Java beachtet werden müssen.
Im Folgenden finden Sie einige Beispielprogramme für 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(); } }
Ausgabe:
Wie kommt es dazu? Was muss geändert werden? Ist es möglich, dieses Problem zu lösen?
Ja!! Der einzige Grund für diese Ausnahme besteht darin, dass Java Aliase zur Laufzeit verwaltet. Erst während der Laufzeit kann es erkennen, dass das erste ein Objekt von Y statt X sein sollte.
//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(); } }
Ausgabe:
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); } }
Ausgabe:
Was passiert, wenn zwei Arrays, a und b, anstelle von Ganzzahlvariablen verwendet werden?
//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); } }
Ausgabe:
In diesem Programm werden im ersten Schritt zwei Arrays, a und b, erstellt. Dann prüfen a und b ähnlich wie im obigen Programm, ob sie gleich sind. Beim Ausführen des Codes ist ersichtlich, dass die Ausgabe für die erste Prüfung falsch und die Ausgabe für die zweite Prüfung wahr ist. Das liegt daran, dass Java Alias funktioniert.
Der Nachteil von Alias besteht darin, dass ein Benutzer auf ein bestimmtes Objekt schreibt und der Eigentümer bei einigen anderen Referenzen nicht annimmt, dass dieses Objekt geändert werden soll.
Das obige ist der detaillierte Inhalt vonJava-Alias. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!