我看过一个毫无意义的代码
class CarFactory {
public void setFullCar(Car car) {
// some code
car.setColor(car.getColor());
car.setWeight(car.getWeight());
car.setAcceleration(car.getAcceleration());
// some code
}
}
当然,在setter Are there any problems with calling a getter in the parameters of a setter?中调用getter并没有错。但是我想知道在执行的任何时刻此行是否有任何重要性?我的意思是我们只是获取一个属性值,然后再次将其设置为相同的属性-只是浪费代码。
我的另一个疑问是,为什么编译器(在预期中相当出色)不会针对此类代码发出任何警告。
答案 0 :(得分:2)
对于编译器,setter和getter只是常规方法,因此不会发出警告。
答案 1 :(得分:0)
用SAME对象的getter值调用setter几乎没有任何意义。因此,我假设将有一个newCar对象,而您想将这些值传输过来。
class CarFactory {
public void setFullCar(Car car) {
// some code
newCar.setColor(car.getColor());
newCar.setWeight(car.getWeight());
newCar.setAcceleration(car.getAcceleration());
// some code
}
}
这假设一个Car
对象的getter只会返回其值而没有任何作用。
public int getWeight() {
return mass;
}
但是在未来,将会有飞行汽车(装满氦气以举升):
public int getWeight() {
return mass - lift;
}
如果您的工厂班级仅使用car.setWeight(car.mass)
,则飞行汽车将失败。