想象一下我有这堂课:
public class Test { private String[] arr = new String[]{"1","2"};
public String[] getArr() { return arr; } } 现在,我有另一个使用上面的类的类:
Test test = new Test(); test.getArr()[0] ="some value!"; //!!! 这就是问题所在:我已经从外部访问了班级的私有领域!我该如何预防?我的意思是如何使该数组不可变?这是否意味着您可以使用每种获取方法来逐步访问私有字段?(我不需要像Guava这样的任何库。我只需要知道执行此操作的正确方法)。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您必须返回阵列的副本。
public String[] getArr() { return arr == null ? null : Arrays.copyOf(arr, arr.length); }
问题来源于stack overflow