我正在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
}
答案 0 :(得分:3)
注意:该答案是the question originally asked,而不是经过重大编辑的版本。
这些方法实际上做的是根本不同的事情,比较它们没有多大意义:一个创建一个对象,设置一些属性,然后返回它;另一个在现有对象上设置属性。
很明显,由于您的第一个版本创建了一个新的Car
,并且创建一个对象会消耗内存,因此从这个意义上讲,第一个版本比第二个版本要消耗更多的内存。但是,如果调用第二个版本的代码必须创建Car
才能传递给它,则不会有明显的内存或性能差异。
拥有一个名为“ setCarDetails”的方法,它不接受Car
来设置它们,这有点奇怪。返回新车的方法通常具有反映该名称的名称,例如“ createCar”或“ buildCar”或“ buildCarWithDetails”。但更典型的是,它只是一个 constructor (并且会接受设置的详细信息,而不是对其进行硬编码,尽管当然会因使用情况而有所不同)。