Rumah >Java >javaTutorial >Mengapa Java Membenarkan Invokasi Kaedah Statik Melalui Kejadian, dan Mengapa Anda Perlu Mengelakkannya?

Mengapa Java Membenarkan Invokasi Kaedah Statik Melalui Kejadian, dan Mengapa Anda Perlu Mengelakkannya?

Susan Sarandon
Susan Sarandonasal
2024-12-09 05:01:11674semak imbas

Why Does Java Allow Static Method Invocation Through Instances, and Why Should You Avoid It?

Invokasi Kaedah Statik melalui Contoh dalam Java

Di Java, adalah mungkin untuk menggunakan kaedah statik melalui contoh, tingkah laku yang menimbulkan pengkompil amaran tetapi bukan ralat.

Mengapa Ia tidak Ralat?

Pasukan reka bentuk Java membuat kesilapan dengan membenarkan gelagat ini pada mulanya. Walaupun ia tidak disokong secara jelas, ia telah dikekalkan atas sebab keserasian. Walaupun ia boleh membawa kepada kod mengelirukan, ia tidak semestinya salah.

Ilusi Polimorfisme

Salah satu sebab mengapa memanggil kaedah statik melalui contoh boleh mengelirukan ialah bahawa ia mewujudkan kesan polimorfisme. Dalam polimorfisme sebenar, kaedah yang digunakan berbeza-beza berdasarkan jenis objek. Walau bagaimanapun, kaedah statik bukan polimorfik; mereka sentiasa terikat pada kelas yang diisytiharkan.

Pertimbangkan contoh berikut:

Thread thread = new Thread();
int activeCount = thread.activeCount();

Kod ini akan menyusun tetapi menjana amaran kerana activeCount ialah kaedah statik kelas Thread . Pengkompil tidak dapat menentukan contoh kelas Thread yang harus digunakan untuk invocation. Kod jenis ini boleh menyebabkan kekeliruan dan kemungkinan ralat.

Pendekatan Alternatif

Dalam bahasa seperti C#, memanggil kaedah statik melalui kejadian tidak dibenarkan. Sebaliknya, pendekatan yang betul ialah menggunakan kaedah statik menggunakan nama kelas, seperti yang ditunjukkan di bawah:

public class Abc
{
    public void Test()
    {
        // Static methods in other classes are available via
        // the class name
        Foo.Bar();
    }
}

Kesimpulan

Walaupun secara teknikalnya dibenarkan untuk memanggil kaedah statik melalui contoh di Jawa, ia dianggap sebagai amalan buruk yang boleh membawa kepada kod yang mengelirukan. Pembangun harus mengelakkan tingkah laku ini dan menganggap amaran pengkompil yang dihasilkannya sebagai ralat. Dalam IDE moden, adalah disyorkan untuk mengkonfigurasi pengkompil untuk menganggap seruan tersebut sebagai ralat untuk memastikan kejelasan dan ketepatan kod.

Atas ialah kandungan terperinci Mengapa Java Membenarkan Invokasi Kaedah Statik Melalui Kejadian, dan Mengapa Anda Perlu Mengelakkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn