Rumah  >  Artikel  >  Java  >  Mengapakah parameter kaedah jarang ditandakan sebagai `akhir` dalam Java?

Mengapakah parameter kaedah jarang ditandakan sebagai `akhir` dalam Java?

Barbara Streisand
Barbara Streisandasal
2024-11-22 07:11:21398semak imbas

Why are method parameters rarely marked `final` in Java?

Mengapa tidak menggunakan final pada Parameter Kaedah?

Kata kunci terakhir pada parameter kaedah mempunyai utiliti terhad.

Tiada Kesan pada Parameter Primitif

Apabila jenis primitif digunakan sebagai parameter kaedah, menandakannya muktamad tidak mempunyai kesan. Parameter primitif diluluskan mengikut nilai, bermakna sebarang perubahan yang dibuat kepada nilai dalam kaedah tidak ditunjukkan di luar kaedah.

Kesan Terhad pada Parameter Bukan Primitif

Untuk parameter bukan primitif ( objek), menandakannya sebagai muktamad menghalang kaedah daripada menetapkan semula rujukan baharu kepada parameter. Walau bagaimanapun, objek itu sendiri masih boleh diubah.

Contoh Balas

Contoh berikut menggambarkan had ini:

public void changeParameter(Collection<Integer> c) {
    c = new ArrayList<>(); // Can't assign a new reference
    c.add(5); // Mutating the object is still possible
}

Walaupun c ditanda muktamad, kaedahnya menukar koleksi yang dirujuk oleh c.

Mengapa Gunakan kaedah muktamad Parameter?

Walaupun pengehadan ini, terdapat satu faedah utama untuk menandakan parameter muktamad: ia menghalang kaedah daripada menugaskan semula parameter secara tidak sengaja kepada objek lain. Ini boleh membantu mengelakkan ralat apabila kaedah bergantung pada objek yang dirujuk oleh parameter.

Pengesyoran

Secara amnya, adalah disyorkan untuk menandakan parameter kaedah muktamad melainkan terdapat sebab khusus untuk tidak melakukannya. Ia meningkatkan kebolehbacaan dan mengelakkan ralat tidak sengaja. Walau bagaimanapun, adalah penting untuk mengetahui batasan akhir apabila digunakan dengan parameter bukan primitif.

Kes Kekal

Dalam satu kes penting, adalah penting untuk menandakan parameter muktamad: apabila kaedah menjamin bahawa objek yang dirujuk oleh parameter tidak akan diubah suai. Jaminan ini boleh dicapai apabila objek tidak berubah, bermakna keadaannya tidak boleh diubah. Contohnya:

public void processImmutableObject(final ImmutableClass obj) {
    // obj's state will not change
}

Dalam senario ini, menandakan obj akhir menghalang kaedah daripada mengubah suai objek secara tidak sengaja.

Atas ialah kandungan terperinci Mengapakah parameter kaedah jarang ditandakan sebagai `akhir` dalam Java?. 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