Dalam artikel ini, kami akan menerangkan kelas tidak berubah dalam java. Juga, kita akan melihat penggunaan kelas tidak berubah. Akan ada contoh kod java yang menunjukkan cara kelas tidak berubah boleh dibuat dalam java. Kelas yang tidak boleh diubah ialah kelas yang kandungannya tidak boleh diubah.
Berikut ialah beberapa perkara penting mengenai kelas tidak berubah:
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Sebelum menggunakan kelas ini, adalah penting untuk mengetahui cara kelas tidak berubah dicipta. Berikut ialah perkara penting yang perlu diingat semasa membuat kelas:
Berikut ialah kegunaan utama kelas tidak berubah dalam java:
Selain daripada kelebihan yang disenaraikan, mungkin terdapat beberapa isu prestasi apabila menggunakan kelas tidak berubah. Oleh itu, jika keselamatan benang dan ciri lain tidak penting, kami boleh mempertimbangkan untuk menggunakan kelas boleh ubah untuk peningkatan prestasi.
Di bawah adalah contoh yang dinyatakan:
Sekarang kita akan melihat contoh kod java yang menunjukkan penciptaan kelas tidak berubah dalam java. Berikut ialah contoh kod java yang menunjukkan cara kelas tidak berubah dicipta dalam java:
Kod:
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()); } }
Output:
Kod di atas menunjukkan penciptaan kelas tidak berubah yang tidak mengandungi sebarang objek boleh ubah sebagai ahli kelas.
Sekarang kita akan melihat cara membuat kelas tidak berubah yang mempunyai objek boleh ubah sebagai ahlinya. Beberapa pengendalian khas diperlukan Untuk mengekalkan kebolehubah dalam kes ini.
Masalah dengan Objek Boleh Ubah dalam Kelas Tidak Boleh Ubah:
Berikut ialah contoh kod biasa yang menunjukkan penciptaan kelas tidak berubah yang mempunyai ahli boleh ubah di dalamnya:
Kod:
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()); } }
Output:
Daripada output di atas, kita dapat melihat bahawa kandungan objek berubah sejak tarikh lahir ditukar. Ini melanggar peraturan kelas tidak berubah.
Penyelesaian kepada Masalah dengan Objek Boleh Ubah dalam Kelas Tidak Boleh Ubah:
Untuk mengendalikan kes sedemikian, beberapa perubahan perlu dilaksanakan dalam kod. Dalam kod yang diubah suai, apabila mengembalikan objek boleh ubah daripada kaedah mendapatkan, kami tidak mengembalikan objek asal; sebaliknya, kami mengembalikan klon objek. Oleh itu perubahan kepada objek klon tidak mempunyai sebarang kesan ke atas objek asal. Berikut ialah kod yang diubah suai:
Kod:
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()); } }
Output:
Daripada output di atas, kita tidak dapat melihat perubahan dalam nilai tarikh; oleh itu, kebolehubahan kelas kekal utuh.
Daripada perbincangan di atas, kami mempunyai pemahaman yang jelas tentang kelas immutable java. Selain itu, kami telah melihat kelebihannya.
Atas ialah kandungan terperinci Kelas Abadi di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!