Mengapa Tidak Menggunakan Kaedah Statik pada Rujukan Objek Null Membuang NullPointerException?
Di Java, lazimnya difahami bahawa menggunakan kaedah pada rujukan objek null mencetuskan NullPointerException. Walau bagaimanapun, pengecualian ini tidak dilemparkan apabila kaedah statik digunakan pada rujukan nol. Mari kita siasat sebabnya.
Definisi dan Akses Kaedah Statik
Kaedah statik dikaitkan dengan kelas, bukannya contoh tertentu. Ia boleh dipanggil terus menggunakan nama kelas, tanpa memerlukan rujukan objek.
Gelagat Tidak Dijangka
Kod contoh di bawah menggambarkan tingkah laku yang tidak dijangka:
<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(); // DOES NOT Throw NullPointerException } }</code>
Sebab Asas
Kunci untuk memahami sebab kod ini berfungsi terletak pada konsep akses ahli statik. Ahli statik, termasuk kaedah, tergolong dalam jenis dan tidak memerlukan contoh objek untuk diakses.
Seruan Kaedah Statik yang Betul
Kaedah statik hendaklah digunakan secara terus menggunakan nama kelas, seperti berikut:
<code class="java">Why.test(); // Correct way to invoke static method</code>
Akses Bukan Statik melalui Rujukan Objek
Walaupun Java membenarkan mengakses ahli statik melalui rujukan objek, amalan ini sangat kuat berkecil hati. Ia boleh membawa kepada kekeliruan, kerana ia membayangkan mengakses ahli contoh, yang tidak betul.
Implikasi Akses Rujukan Objek
Apabila mengakses ahli statik melalui rujukan objek , perkara berikut berlaku:
Soalan Berkaitan
Memahami konsep ini juga menerangkan mengapa Java melarang penggantian kaedah statik dan mengapa memanggil kaedah statik melalui contoh bukan ralat untuk pengkompil Java.
Atas ialah kandungan terperinci Mengapa Tidak Menggunakan Kaedah Statik pada Rujukan Objek Null Membuang NullPointerException?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!