【问题标题】:Replacing vector with arraylist用数组列表替换向量
【发布时间】:2019-01-16 16:01:26
【问题描述】:

我正在处理一个遗留代码库,它到处都引用了java.util.Vector。我收到声纳错误,告诉我用ArrayList 替换它。由于引用无处不在,我想采取所有必要的预防措施来避免将 Vector 替换为 ArrayList 可能出现的任何问题。

我找不到任何关于此的信息(可能是因为它是一个非常古老的问题,而且大多数人至少在十年前就已经过了这个问题)。我应该注意什么?由于向量是线程安全的,有什么更简单的方法来替换它而不引起线程问题(如果有的话)?

仅供参考,这是一个网络项目,并没有明确使用多线程。

【问题讨论】:

  • 有人刚刚在这里发布了一些与 ArrayList 相关的答案stackoverflow.com/questions/54220769/…
  • 好吧,Vector 上的 JavaDoc 声明:“如果不需要线程安全实现,建议使用 ArrayList 代替 Vector。” - 如果您不确定是否需要线程安全实现,我会坚持使用 Vector 并告诉 Sonar 接受。

标签: java


【解决方案1】:

Vector 已同步,不接受 null 值。你可以使用

List<String> l = Collections.synchronizedList(new ArrayList<String>())

但这不是 100% 相同的替代品。如果您的项目中没有好的测试,请不要替换 Vector 并添加 //NOSNAR 以禁用给定行中的声纳检查。

【讨论】:

  • 有 422 个对 Vector 的引用。我已经考虑过添加///NOSONAR。添加//NOSONAR 不仅乏味,还会增加代码异味,//NOSONAR 到处都是。寻找更好的解决方案。
猜你喜欢
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
  • 2021-07-04
相关资源
最近更新 更多