当前位置: 首页 > 面试题库 >

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

萧嘉禧
2023-03-14
问题内容

想象一下我有这堂课:

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);
}


 类似资料:
  • 问题内容: 我想控制全局变量(或全局范围的变量),使其在程序初始化代码中仅设置一次,然后将其锁定。 我对全局变量使用UPPER_CASE_VARIABLES,但是我想有一种确定的方法,无论如何不要更改变量。 python是否提供(或类似)功能? 您如何控制全局范围的变量? 问题答案: Activestate有一个由古老的Alex Martelli 撰写的题为“ Constants in Pytho

  • 问题内容: 是否可以防止两个或多个用户同时修改同一数据库条目? 向用户显示错误消息以执行第二次提交/保存操作是可以接受的,但是数据不应被静默覆盖。 我认为锁定条目不是一种选择,因为用户可能会使用“后退”按钮或只是关闭浏览器,从而永远保持锁定状态。 问题答案: 这就是我在Django中进行乐观锁定的方式: 上面列出的代码可以作为Custom Manager中的方法实现。 我做出以下假设: filte

  • 我正在实现一个kiosk模式应用程序,我已经成功地使应用程序全屏显示,在4.3之后没有状态栏出现,但在4.3和4.4中无法隐藏状态栏,因为当我们在屏幕顶部向下滑动时,状态栏会出现。 我已经试着在 在清单中指定全屏主题 设置窗口标志ie setFlags setSystemUi可视性 可能重复,但未找到具体解决方案 永久隐藏Android状态栏 最后的事情我想要的是,如何隐藏状态栏永久在一个活动??

  • 我有一个来自javax的现有jsonobject。json。JsonObject类。 我一辈子都想不出如何修改其中现有的价值观。理想情况下,我想这样做: 根据API,不允许修改该映射。 http://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html 此映射对象提供对JSON对象数据的只读访问,并尝试修改映射,无论是直接修改还是通过其集合

  • 问题内容: 我在Python中使用Matplotlib绘制简单的xy数据集。这会生成漂亮的图形,尽管当我使用“图形视图”(执行时出现)在绘图图形的各个部分上“放大”得太近时,x轴值也会从标准数字格式(1050、1060, 1070等)转换为具有指数符号的科学形式(例如x,x轴标记为的1、1.5、2.0 )。 我希望我的图形保留轴的简单编号,而不要使用指数形式。有没有一种方法可以强制Matplotl

  • 小问题:如何使进口证书(pfx)不可出口? 是不支持这种场景还是我们缺少了什么?提前道谢!