当前位置:  开发笔记 > 编程语言 > 正文

修改公共静态最终数组

如何解决《修改公共静态最终数组》经验,为你挑选了1个好方法。

在设计一个小API的时候,我正准备编写一个引用String数组的静态值: public static final String[] KEYS={"a","b","c"} 我发现在Joshua Bloch的"Effective Java"第14项中将其标记为"安全漏洞",他建议将其作为替代方案,声明te array'private'并提供返回不可修改列表的公共getter:

return Collections.unmodifiableList(Arrays.asList(KEYS))

我只是不明白为什么这是必要的,初始语句中的数组被声明为final,即使它是公共的,它的元素是不可变的,如何从外部代码修改?



1> hendrik..:

该数组不是不可变的.

你仍然可以写:

KEYS[0] = "d";

没有任何问题. final只是意味着你不能写:

KEYS = new String[]{"d"};

即,您无法为变量分配新值KEYS.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有