如何让 Java 中数组的元素不可变?


不行,您不能让数组元素不可变。

但是java.util.Collections 类的unmodifiableList() 方法接受 List 接口的对象(实现其类的对象),并返回给定对象的不可变形式。用户只能**只读**方式访问获得的列表。

并且ArrayList 类的asList() 方法接受数组并返回 List 对象。

因此,要转换一个不可变的数组−

  • 获得所需的数组。

  • 使用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)

更新日期: 2019-10-15

3K+ 浏览

开启你的职业生涯

完成课程获得认证

立即开始
广告