gpt4 book ai didi

java - 收集字段警告的返回 - setter 和构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:47 27 4
gpt4 key购买 nike

如果我做类似的事情,IntelliJ 会警告我“返回集合字段”

private List<String> myList;

public List<String> getMyList() {
return myList;
}

代码检查状态的描述:

Reports any attempt to return an array or Collection field from a method. Since the array or Collection may have its contents modified by the calling method, this construct may result in an object having its state modified unexpectedly. While occasionally useful for performance reasons, this construct is inherently bug-prone.

我完全理解这些问题,但我想知道为什么我没有被警告对 setter 和构造函数做同样的事情

public MyListClass (List<String> myList) {
this.myList = myList;
}

public void setMyList (List<String> myList) {
this.myList = myList;
}

我认为这会导致同样的问题。

我不应该为获取和设置集合创建新的集合吗?所以不仅

return new ArrayList<String>(this.myList);

还有

this.myList = new ArrayList<String>(myList);

(在此示例中忽略使返回列表不可修改或检查是否为 null)

最佳答案

我相信这只是为了促进标准编码实践。

上面提到的警告会强制开发人员在类中使用不可变集合。

您可以安全地忽略此警告,或者您可以取消检查。

您可以在这里阅读:https://www.jetbrains.com/help/idea/2016.2/suppressing-inspections.html

关于java - 收集字段警告的返回 - setter 和构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38783124/

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