我正在尝试将不可修改的 ArrayList 设置为最终变量 EX_FIELDS。 exList 是一个现有的 ArrayList 对象。

EX_FIELDS = (ArrayList<String>) Collections.unmodifiableList(exList);

此代码存在于静态块中。当类加载时,我收到以下错误。
java.lang.ClassCastException: java.util.Collections$UnmodifiableRandomAccessList cannot be cast to java.util.ArrayList

我需要使用 EX_FIELDS 来支持随机访问。还有其他方法可以实现吗?提前感谢您的帮助

最佳答案

EX_FIELDS应该具有List<String>类型,而不是ArrayList<String>类型,并且您不需要执行任何强制类型转换:您应该编写

EX_FIELDS = Collections.unmodifiableList(exList);

这是您应该对接口(interface)进行编程而不是对实现进行编程的更为通用的规则的一个实例。

10-07 19:39
查看更多