Kata kunci terakhir pada parameter kaedah mempunyai utiliti terhad.
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.
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 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.
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.
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.
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!