将ArrayList转换为不可修改的ArrayList

amu*_*093 1 java arraylist

我正在尝试将不可修改的ArrayList添加到最终变量EX_FIELDS.exList是现有的ArrayList对象.

EX_FIELDS = (ArrayList<String>) Collections.unmodifiableList(exList);
Run Code Online (Sandbox Code Playgroud)

此代码存在于静态块中.当类加载时,我收到以下错误.

java.lang.ClassCastException: java.util.Collections$UnmodifiableRandomAccessList cannot be cast to java.util.ArrayList
Run Code Online (Sandbox Code Playgroud)

我需要使用EX_FIELDS来支持随机访问.有没有其他方法可以完成它?感谢提前任何帮助

Lou*_*man 10

EX_FIELDS应该有类型List<String>,而不是ArrayList<String>,你不应该做任何演员:你应该写

EX_FIELDS = Collections.unmodifiableList(exList);
Run Code Online (Sandbox Code Playgroud)

这是您应该编程到接口而不是实现的更一般规则的一个实例.