class Foo(){
String name;
public Foo(String name){
//code to be inserted
}
public void setName(String name){
this.name = name;
}
}
在缺失行中插入更好的内容以及原因:
1。)this.name = name;
2。)setName(name);
答案 0 :(得分:6)
由你决定。
例如,如果要在传递给构造函数的属性上执行某些验证,然后将其存储在name
变量中,请调用setter。
但是如果你想避免这种验证,或者如果你的setter可能抛出异常,请直接分配变量。
这里最重要的是在构造函数方法的末尾创建了一致的实例。
答案 1 :(得分:2)
setName(name);
万一你在setter中添加了一些检查,否则你可以避免使用setter。
例如
public void setWeight(int weight){
if(weight<=0)
this.weight = 50; // set some default/average weight
else
this.weight = weight;
}
答案 2 :(得分:1)
一般来说,安装者呼叫更安全。 setter可能有其他逻辑:
答案 3 :(得分:0)
class Foo(){
String name;
public Foo(String name){
this.name = name;
}
}
设置名称时,您可以调用Foo(name)
答案 4 :(得分:0)
在我看来,最好的方法是传递setter方法中的值和在为该类创建对象时更重要的值,然后在构造函数中传递它们。
如果你试图传递构造函数中的所有值,那么当你的类增长时,如果有太多的参数来创建对象,它将变得更大更难看。
因此,例如,假设您的类Foo依赖于属性int id,并假设您需要始终基于此id在构造函数中执行某些逻辑。 因此,您将创建一个传递此id的构造函数。然后使用setter方法将值添加到该对象的属性中。
Foo(int id){
}