gpt4 book ai didi

java - 修改公共(public)静态最终数组

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:20 25 4
gpt4 key购买 nike

在设计一个小型 API 时,我打算编写一个引用字符串数组的静态值:public static final String[] KEYS={"a","b","c"}我发现这在 Joshua Bloch 的“Effective Java”第 14 项中被标记为“安全漏洞”,他在其中提出替代方案,声明数组为“私有(private)”并提供返回不可修改列表的公共(public) getter:

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

我只是不明白为什么这是必要的,初始语句中的数组被声明为最终的,即使它是公共(public)的,并且它的元素是不可变的,怎么能从外部代码修改它?

最佳答案

数组不是不可变的。

你仍然可以写:

KEYS[0] = "d";

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

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

即您不能为变量 KEYS 分配新值。

关于java - 修改公共(public)静态最终数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34507800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com