Mengakses Kaedah Statik dengan Rujukan Null
Di Java, menggunakan kaedah pada rujukan null biasanya mencetuskan NullPointerException. Walau bagaimanapun, tingkah laku ini berbeza untuk kaedah statik.
Kaedah Statik lwn. Kaedah Contoh
Dalam Java, kaedah boleh sama ada statik atau contoh. Kaedah statik tergolong dalam kelas itu sendiri dan boleh dipanggil terus menggunakan nama kelas, manakala kaedah contoh dikaitkan dengan objek dan memerlukan rujukan objek untuk dipanggil.
Memanggil Kaedah Statik dengan Rujukan Null
Apabila menggunakan kaedah statik menggunakan rujukan nol, masa jalan Java secara automatik menggantikan rujukan dengan jenis kelas yang dimiliki oleh kaedah tersebut. Tingkah laku ini memastikan kaedah statik boleh dipanggil walaupun tiada contoh kelas wujud atau rujukannya adalah batal.
Contoh
Pertimbangkan kod Java berikut:
<code class="java">public class Why { public static void test() { System.out.println("Passed"); } public static void main(String[] args) { Why NULL = null; NULL.test(); } }</code>
Dalam contoh ini, kaedah test() adalah statik dan boleh dipanggil terus menggunakan nama kelas. Baris "NULL.test();" menggantikan rujukan nol dengan nama kelas "Mengapa" dan berjaya menggunakan kaedah test(). Tiada NullPointerException dibuang.
Mengapa Gelagat Ini Dibenarkan?
Java membenarkan gelagat ini kerana kaedah statik tidak memerlukan contoh kelas untuk dilaksanakan. Mereka dikaitkan dengan kelas itu sendiri, bukan objek tertentu. Apabila kaedah statik dipanggil menggunakan rujukan null, pengkompil memastikan bahawa jenis kelas yang betul digunakan.
Nota Awas
Semasa menggunakan kaedah statik menggunakan rujukan null ialah dibenarkan, ia dianggap sebagai amalan yang tidak baik. Pembangun hendaklah sentiasa menggunakan nama kelas yang betul apabila mengakses kaedah statik untuk mengelakkan kekeliruan dan kemungkinan ralat.
Atas ialah kandungan terperinci Mengapa Anda Boleh Memanggil Kaedah Statik dengan Rujukan Objek Null di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!