Permulaan Pembolehubah Instance: Deklarasi lwn. Pembina
Apabila mentakrifkan pembolehubah contoh dalam kelas Java, sekiranya ia diwujudkan semasa pengisytiharan atau dalam pembina? Mari kita mendalami kelebihan dan perbezaan antara kedua-dua pendekatan.
Varian 1: Pengisytiharan dengan Permulaan
class A { B b = new B(); }
Varian 2: Pengisytiharan tanpa Permulaan
class A { B b; A() { b = new B(); } }
Tidak ada Perbezaan
Dari sudut teknikal, tiada perbezaan praktikal antara kedua-dua pendekatan. Pengkompil secara automatik menjana dan memasukkan kod permulaan pemboleh ubah contoh ke dalam pembina untuk kelas.
Kebolehbacaan
Varian 1, dengan pemulaan pada pengisytiharan, biasanya dipertimbangkan lebih mudah dibaca. Ia memberikan perkaitan yang jelas antara perisytiharan pembolehubah dan nilai awalnya.
Pengendalian Pengecualian
Varian 2, dengan pengamulaan dalam pembina, membenarkan pengendalian pengecualian. Jika permulaan pembolehubah contoh gagal, pengecualian boleh dilemparkan dan objek kekal tidak dibina. Varian 1 tidak menawarkan keupayaan ini.
Blok Permulaan
Selain pendekatan pengisytiharan dan pembina, Java juga menyokong penggunaan blok pemula. Blok ini juga diubah menjadi kod yang diletakkan dalam pembina oleh pengkompil.
{ a = new A(); }
Lazy Initialization
Untuk pengoptimuman prestasi, pembangun boleh memilih untuk permulaan malas. Dalam pendekatan ini, pembolehubah contoh tidak dimulakan sehingga ia mula-mula diakses:
ExpensiveObject o; public ExpensiveObject getExpensiveObject() { if (o == null) { o = new ExpensiveObject(); } return o; }
Suntikan Ketergantungan
Untuk pengurusan pergantungan yang lebih baik, adalah disyorkan untuk mengelak daripada menggunakan pengendali baharu dalam kelas. Sebaliknya, pertimbangkan untuk menggunakan rangka kerja suntikan kebergantungan untuk mengendalikan instantiasi dan suntikan kebergantungan.
Atas ialah kandungan terperinci Permulaan Pembolehubah Contoh dalam Java: Pengisytiharan atau Pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!