在执行的任何瞬间,为同一属性在setter中调用getter是否相关?

时间:2019-02-07 10:28:29

标签: java

我看过一个毫无意义的代码

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并没有错。但是我想知道在执行的任何时刻此行是否有任何重要性?我的意思是我们只是获取一个属性值,然后再次将其设置为相同的属性-只是浪费代码。

我的另一个疑问是,为什么编译器(在预期中相当出色)不会针对此类代码发出任何警告。

2 个答案:

答案 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),则飞行汽车将失败。