Heim >Java >javaLernprogramm >Unveränderliche Klasse in Java
In diesem Artikel erklären wir die unveränderliche Klasse in Java. Außerdem werden wir die Verwendung unveränderlicher Klassen sehen. Es wird Java-Codebeispiele geben, die zeigen, wie unveränderliche Klassen in Java erstellt werden können. Eine unveränderliche Klasse ist eine Klasse, deren Inhalt nicht geändert werden kann.
Im Folgenden sind einige wichtige Punkte bezüglich der unveränderlichen Klasse aufgeführt:
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Bevor Sie diese Klasse verwenden, ist es wichtig zu wissen, wie eine unveränderliche Klasse erstellt wird. Im Folgenden sind wichtige Punkte aufgeführt, die Sie bei der Erstellung des Kurses beachten sollten:
Im Folgenden sind die Hauptverwendungen unveränderlicher Klassen in Java aufgeführt:
Abgesehen von den aufgeführten Vorteilen kann es bei der Verwendung unveränderlicher Klassen zu einigen Leistungsproblemen kommen. Wenn Thread-Sicherheit und andere Funktionen nicht wichtig sind, können wir daher die Verwendung veränderlicher Klassen zur Leistungsverbesserung in Betracht ziehen.
Im Folgenden finden Sie die genannten Beispiele:
Jetzt sehen wir Java-Codebeispiele, die die Erstellung unveränderlicher Klassen in Java zeigen. Hier ist ein Java-Codebeispiel, das zeigt, wie unveränderliche Klassen in Java erstellt werden:
Code:
package com.edubca.immutabledemo; public final class ImmutableDemo { final String studentName; final int rollNumber; public ImmutableDemo (String studentName, int rollNumber) { this.studentName = studentName; this.rollNumber = rollNumber; } public String getStudentName() { return studentName; } public int getRollNumber() { return rollNumber; } public static void main(String[] args) { ImmutableDemo obj = new ImmutableDemo ("John" , 100); // Since no getters are available contents cannot be modified. // Also as variables are declared final they cannot be modified System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); } }
Ausgabe:
Der obige Code zeigt die Erstellung einer unveränderlichen Klasse, die kein veränderbares Objekt als Klassenmitglied enthält.
Jetzt werden wir sehen, wie man unveränderliche Klassen erstellt, deren Mitglieder veränderbare Objekte sind. In diesem Fall ist eine besondere Handhabung erforderlich, um die Unveränderlichkeit aufrechtzuerhalten.
Problem mit einem veränderlichen Objekt in einer unveränderlichen Klasse:
Hier ist ein normales Codebeispiel, das die Erstellung einer unveränderlichen Klasse mit veränderlichen Mitgliedern zeigt:
Code:
package com.edubca.immutabledemo; import java.util.Date; import java.text.SimpleDateFormat; public final class ImmutableDemo { final String studentName; final int rollNumber; final Date birthDate; public ImmutableDemo (String studentName, int rollNumber, Date birthDate) { this.studentName = studentName; this.rollNumber = rollNumber; this.birthDate=birthDate; } public String getStudentName() { return studentName; } public int getRollNumber() { return rollNumber; } public Date getBirthDate() { return birthDate; } public static void main(String[] args) throws Exception { String birthDate= "31/09/1997"; ImmutableDemo obj = new ImmutableDemo ("John" , 100, new SimpleDateFormat("dd/MM/yyyy").parse(birthDate)); System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); System.out.println("Birth date is " + obj.getBirthDate()); obj.getBirthDate().setTime(1000); System.out.println("After changing birth date>>>>>>>>>>>>"); System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); System.out.println("Birth date is " + obj.getBirthDate()); } }
Ausgabe:
Aus der obigen Ausgabe können wir ersehen, dass sich der Inhalt des Objekts seit der Änderung des Geburtsdatums geändert hat. Dies verstößt gegen die Regeln der unveränderlichen Klasse.
Die Lösung des Problems mit einem veränderlichen Objekt in einer unveränderlichen Klasse:
Um solche Fälle zu bewältigen, müssen einige Änderungen im Code implementiert werden. Wenn wir im geänderten Code veränderbare Objekte von der Methode get zurückgeben, geben wir nicht das ursprüngliche Objekt zurück. Stattdessen geben wir den Klon des Objekts zurück. Daher haben Änderungen an geklonten Objekten keine Auswirkungen auf das Originalobjekt. Hier ist der geänderte Code:
Code:
package com.edubca.immutabledemo; import java.util.Date; import java.text.SimpleDateFormat; public final class ImmutableDemo { final String studentName; final int rollNumber; final Date birthDate; public ImmutableDemo (String studentName, int rollNumber, Date birthDate) { this.studentName = studentName; this.rollNumber = rollNumber; this.birthDate=birthDate; } public String getStudentName() { return studentName; } public int getRollNumber() { return rollNumber; } public Date getBirthDate() { return (Date)birthDate.clone(); } public static void main(String[] args) throws Exception { String birthDate= "31/09/1997"; ImmutableDemo obj = new ImmutableDemo ("John" , 100, new SimpleDateFormat("dd/MM/yyyy").parse(birthDate)); System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); System.out.println("Birth date is " + obj.getBirthDate()); obj.getBirthDate().setTime(1000); System.out.println("After changing birth date>>>>>>>>>>>>"); System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); System.out.println("Birth date is " + obj.getBirthDate()); } }
Ausgabe:
Aus der obigen Ausgabe können wir keine Änderung des Datumswerts erkennen; Daher bleibt die Unveränderlichkeit der Klasse erhalten.
Aus der obigen Diskussion haben wir ein klares Verständnis für unveränderliche Java-Klassen. Außerdem haben wir die Vorteile davon gesehen.
Das obige ist der detaillierte Inhalt vonUnveränderliche Klasse in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!