开发者社区 问答 正文

如何防止在班级中修改私有字段?

想象一下我有这堂课:

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这样的任何库。我只需要知道执行此操作的正确方法)。

展开
收起
保持可爱mmm 2020-02-06 22:47:06 372 分享 版权
1 条回答
写回答
取消 提交回答
  • 您必须返回阵列的副本。

    public String[] getArr() { return arr == null ? null : Arrays.copyOf(arr, arr.length); }

    问题来源于stack overflow

    2020-02-06 22:47:25
    赞同 展开评论
问答地址: