gpt4 book ai didi

java - 用户提供的数组直接存储

转载 作者:行者123 更新时间:2023-12-02 05:51:48 24 4
gpt4 key购买 nike

我已经提到:Security - Array is stored directly .

我的代码如下

public IndexBlockAdapter(String[] itemStr) {
if(itemStr == null) {
this.itemStr = new String[0];
} else {
this.itemStr = Arrays.copyOf(itemStr, itemStr.length);
}
}

但是 Sonar 仍然拾取它并提示“数组是直接存储的”,尽管制作了副本。我很困惑。

感谢任何帮助!

最佳答案

Arrays.copyOf does a shallow copy. 

它只是复制引用而不是实际值。下面的代码将打印所有 true 来证明事实

String [] str1 = {"1","2","3"};

String [] str2 = Arrays.copyOf(str1, str1.length);
for (int i=0;i<str1.length;i++) {
System.out.println(str1[i] == str2[i]);

}

相反,如果您使用以下代码,您将进行深度复制,并且应该很好

String [] str3 = new String[str1.length];
for (int i=0;i<str1.length;i++) {
str3[i] = new String(str1[i]);
}
for (int i=0;i<str1.length;i++) {
System.out.println(str1[i] == str3[i]);
}

关于java - 用户提供的数组直接存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23471051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com