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);
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);
由你决定。
例如,如果您想在将传递给构造函数的属性存储到name
变量中之前对其执行一些验证,请调用 setter。
但是如果你想避免这种验证,或者你的 setter 可能抛出异常,直接分配变量。
这里最重要的是在构造函数方法的末尾创建了一个一致的实例。
setName(name);
以防万一您在 setter 中添加了一些检查,否则您可以避免 setter。
例如
public void setWeight(int weight){
if(weight<=0)
this.weight = 50; // set some default/average weight
else
this.weight = weight;
}
一般来说,setter 调用更安全。setter 可能有额外的逻辑:
在我看来,最好的方法是传递 setter 方法中的值以及在为该类创建对象时更重要的值,然后将它们传递给构造函数。
如果你尝试在构造函数中传递所有值,那么随着你的类的增长,它会变得更大更丑,因为有太多参数来创建对象。
因此,例如,假设您的类 Foo 依赖于属性 int id,并假设您需要始终基于此 id 在构造函数中执行一些逻辑。因此,您将创建一个传递此 ID 的构造函数。稍后使用 setter 方法向该对象的属性添加值。
Foo(int id){
}
class Foo(){
String name;
public Foo(String name){
this.name = name;
}
}
在设置您可以调用的名称时Foo(name)