ไม่ คุณไม่สามารถทำให้องค์ประกอบของอาร์เรย์ไม่เปลี่ยนรูปได้
แต่ unmodifiableList() วิธีการของ java.util.Collections คลาสยอมรับวัตถุของอินเทอร์เฟซรายการ (วัตถุของการนำคลาสไปใช้) และส่งคืนรูปแบบที่ไม่สามารถแก้ไขได้ของวัตถุที่กำหนด ผู้ใช้มีสิทธิ์เข้าถึงรายการที่ได้รับแบบอ่านอย่างเดียวเท่านั้น
และ asList() วิธีการของ ArrayList class ยอมรับอาร์เรย์และส่งกลับรายการวัตถุ
ดังนั้นการแปลงอาร์เรย์ที่ไม่เปลี่ยนรูป -
-
รับอาร์เรย์ที่ต้องการ
-
แปลงเป็นวัตถุรายการโดยใช้ asList() วิธีการ
-
ส่งรายการที่ได้รับเป็นพารามิเตอร์ไปยัง unmodifiableList() วิธีการ
ตัวอย่าง
import java.util.Arrays; import java.util.Collections; import java.util.List; public class UnmodifiableExample { public static void main(String args[]) { //Creating a string array String strArray[] = {"Raju", "Rama", "Rahman", "Rachel", "Ranbhir", "Rangan"}; //Converting the string array to list object List<String> list = Arrays.asList(strArray); //Converting the List object to immutable List<String> immutable = Collections.unmodifiableList(list); System.out.println(immutable); immutable.add("komala"); } }
ผลลัพธ์
[Raju, Rama, Rahman, Rachel, Ranbhir, Rangan] Exception in thread "main" java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableCollection.add(Unknown Source) at September19.UnmodifiableExample.main(UnmodifiableExample.java:19)