gpt4 book ai didi

java - 从构造函数调用 setter

转载 作者:IT老高 更新时间:2023-10-28 20:21:54 26 4
gpt4 key购买 nike

从构造函数(如果有的话)调用 mutator 的优点和缺点是什么

即:

public MyConstructor(int x) {
this.x = x;
}

对比:

public MyConstructor(int x) {
setX(x);
}

public void setX(int x) {
this.x = x;
}

你有偏好吗? (这不是家庭作业,只需查看我们的编码标准文档,其中说在构造函数中设置实例 var 时始终调用 mutators,而我并不总是这样做)

最佳答案

就我个人而言,大多数情况下我会直接设置变量。

方法通常期望实例在它们被调用时已经完全形成。特别是,从构造函数调用被覆盖的方法是难以理解的代码和难以发现的错误的秘诀。

话虽如此,我还是经常尝试让类不可变,在这种情况下,不仅没有 setter ,而且您必须从构造函数(或变量初始化器)设置最终变量无论如何:)

在属性有逻辑的地方,setter 逻辑通常是验证,有时会更改传播到观察者。我通常希望在方法开始时显式检查构造函数参数,并且您不会希望在实例完全创建之前发生任何更改传播。

关于java - 从构造函数调用 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893558/

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