java - Sonar Security - Array is directly stored::为什么只在ArrayList中发布array?

标签 java sonarqube

我有4个类(class)

Class A {    
    public void setMyArray(String[] myArray) { 
      this.myArray = myArray; 
    }
}

Class B {    
    public void setMyArrayList(ArrayList myArray) { 
      this.myArray = myArray; 
    }
}
Class C {
  public void setX(int x) { 
  this.myX = x; 
}}
 Class D {    
public void setX(Integer x) { 
  this.x = x; 
}

Sonar 在第一个类上报告了一个问题 Only "Array is directly stored"

但是 Sonar 在二等舱上没有报告同样的问题。我想知道为什么?

最佳答案

因为任何人都可以修改外部数组。

有了列表,您可以选择传入一个不可修改的列表来解决这个问题,同时如果您愿意,仍然可以方便地进行外部访问。

因此第二种情况确实存在问题,但这种情况不太常见,也更容易避免。

使用原始数组还有其他问题。如果阵列需要增长,并且您还需要外部访问,那么您就不再拥有它了——它们指向旧阵列,而不是新的扩展阵列。有了列表,一切都被封装了。

关于java - Sonar Security - Array is directly stored::为什么只在ArrayList中发布array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12828453/

相关文章:

java - 为什么当我滚动 RecyclerView 时我的 TextView 文本大小会改变? (使用自动调整 TextView)

java - 如何将 ActionListener 放在使用 Jbuttons ArrayList 创建的 JButton 上

Java:神秘的无效方法引用

java - 如何将 Sonar 问题显示为编译时错误?

java - 如何获取 Sonar 树的参数值

java - 建立新的 Java 开发商店

java - 从php查询远程mysql数据库并获取结果集

android - Gradle Sonar 运行者 : fail build on failed Quality Gate

java - 在 SonarQube 中编写自己的 Java 自定义规则的初学者指南

SonarQube 不会向 Discord webhook 发送通知