簡體   English   中英

創建一個方法來設置對象的值,返回對象或使用傳遞的參數設置?

[英]Creating a method that will set values on a object, return the object or set using the passed param?

我正在我的 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
}

注意:這回答了最初提出的問題,而不是顯着編輯的版本。


這些方法確實做了根本不同的事情,比較它們沒有多大意義:創建一個對象,設置一些屬性,然后返回它; 另一個在現有對象上設置屬性。

顯然,由於您的第一個版本創建了一個新的Car ,並且創建一個對象會消耗內存,從這個意義上說,第一個版本比第二個版本消耗更多的內存。 但是如果調用你的第二個版本的代碼必須創建Car來傳遞給它,那么內存或性能沒有顯着差異。

有一個名為“setCarDetails”的方法不接受Car來設置它們,這有點奇怪。 返回新車的方法通常會有一個反映這一點的名稱,例如“createCar”或“buildCar”或“buildCarWithDetails”。 但更典型的是,它只是一個構造函數(並且會接受要設置的細節,而不是對它們進行硬編碼,當然這會因用例而異)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM