创建一个将在对象上设置值,返回对象或使用传递的参数进行设置的方法?

时间:2018-11-05 08:43:48

标签: java methods

我正在Java项目中创建一个方法,该方法只是设置对象的值,该对象的值又由另一种方法调用以进行某些处理。常见方法是返回要设置的对象,另一种方法是设置在参数中传递的对象。

能否给我两种情况的优点和缺点(甚至是内存消耗或性能,甚至是细微的差别,或者何时使用它们),两者都可以,但是也许我遗漏了要点。

返回要设置的对象。

public Vehicles setVehiclesDetails(){
    Vehicles vehicles = new Vehicles();
    List<Car> carList = new ArrayList<>();
    Car car = new Car();
    car.setName("Tesla Model S");
    car.setBrand("Tesla");
    car.setPrice(45000);
    carList.add(car);
    List<Bike> bikeList = new ArrayList<>();
    Bike bike = new Bike();
    bike.setName("A");
    bikeList.add(bike);
    vehicles.setCarList(carList);
    vehicles.setBikeList(bikeList);
    return vehicles;
}

使用参数中传递的对象进行设置

public void setCarDetails(Vehicles vehicles){
    List<Car> carList = new ArrayList<>();
    Car car = new Car();
    car.setName("Tesla Model S");
    car.setBrand("Tesla");
    car.setPrice(45000);
    vehicles.setCarList(carList);
}

调用方法

public void processVehicles(){
    Vehicles vehicles = new Vehicles();

    //method1
    vehicles = setVehiclesDetail();
    //other codes to process vehicles

    //method2
    setVehiclesDetail(vehicles);
    //other codes to process vehicles
}

1 个答案:

答案 0 :(得分:3)

注意:该答案是the question originally asked,而不是经过重大编辑的版本。


这些方法实际上做的是根本不同的事情,比较它们没有多大意义:一个创建一个对象,设置一些属性,然后返回它;另一个在现有对象上设置属性。

很明显,由于您的第一个版本创建了一个新的Car,并且创建一个对象会消耗内存,因此从这个意义上讲,第一个版本比第二个版本要消耗更多的内存。但是,如果调用第二个版本的代码必须创建Car才能传递给它,则不会有明显的内存或性能差异。

拥有一个名为“ setCarDetails”的方法,它不接受Car来设置它们,这有点奇怪。返回新车的方法通常具有反映该名称的名称,例如“ createCar”或“ buildCar”或“ buildCarWithDetails”。但更典型的是,它只是一个 constructor (并且会接受设置的详细信息,而不是对其进行硬编码,尽管当然会因使用情况而有所不同)。