ไม่ คุณไม่สามารถทำให้องค์ประกอบของอาร์เรย์ไม่เปลี่ยนรูปได้
แต่ 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)