【问题标题】:Something I want to make permanent in java我想在java中永久化的东西
【发布时间】:2018-09-06 21:57:45
【问题描述】:

如果我有

String[] arr = new String[6]

我可以使用什么代码使其永久化?我还没有尝试过,而且我发现很难获得这些具体信息。

谢谢

【问题讨论】:

  • 请把你的问题说清楚,你最好把你的代码贴在这里。
  • 那是无效的Java代码
  • 看来你要的是final,不能修改。
  • “永久”是什么意思?恐怕目前还不清楚你在问什么。
  • 请写一个有效的代码!

标签: java string


【解决方案1】:

数组的主要问题是它们很难锁定

使用final String[] arr = {"a", "b"}; 会阻止尝试将arr 设置为新值,但使用arr[0] = "c"; 仍然有效

相反,将其保密并且永远不要在您的代码中更改它会更容易


如果此列表要发送到其他地方且不得修改,则可以使用unmodifiableList 对象代替

List<String> arr = new ArrayList<String>();
arr.add("a");
arr.add("b");
arr = Collections.unmodifiableList(arr);

这并不完全安全,因为reflection 仍然可以修改值 (example),但它应该足以避免编码时出错

【讨论】:

  • 我可以把数字放在“a”之后,这样就变成“a20”了吗?
  • @Wru 在最后一行,Collections.unmodifiableList(arr) 创建了一个锁定列表。如果您尝试将数组转换为锁定列表,您可以使用 String[] arr = ...; List&lt;String&gt; locked = Collections.unmodifiableList(Arrays.asList(arr));
  • @Wru a 后面的数字是什么意思? "a""b" 只是添加到列表中的示例字符串,它们可以是任何你想要的(以及你想要的任意数量)
  • String[] arr = 30; List 锁定 = Collections.unmodifiableList(Arrays.asList(arr)); 30 是数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多