代码之家  ›  专栏  ›  技术社区  ›  Arun Sudhakaran Nagma Firdose

在执行的任何时刻,在同一个属性的setter中调用getter是否有关联?

  •  0
  • Arun Sudhakaran Nagma Firdose  · 技术社区  · 6 年前

    我看到一个我觉得毫无意义的代码

    class CarFactory {
        public void setFullCar(Car car) {
            // some code
            car.setColor(car.getColor());
            car.setWeight(car.getWeight());
            car.setAcceleration(car.getAcceleration());
            // some code
        }
    }
    

    当然,在setter中调用getter没有错 Are there any problems with calling a getter in the parameters of a setter? . 但我想知道在执行的任何时候这条线是否重要?我的意思是,我们只是获取一个属性值并再次将其设置为同一个属性-只是浪费代码。

    我的另一个疑问是为什么编译器(在预期中相当好)没有对这类代码发出任何警告。

    2 回复  |  直到 6 年前
        1
  •  2
  •   xingbin    6 年前

    对于编译器来说,setter和getter只是普通的方法,所以不会发出警告。

        2
  •  0
  •   Angelo Fuchs    6 年前

    用同一对象的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) 飞车会失败的。