[英]What is a best practice to initialize an object at runtime in a method in java?
[英]What is the best practice to modify an object passed to a method
將對象傳遞給方法后,我想更改其中一個字段。 在Java中執行此任務的最佳做法是什么?
如其他答案所述,您只需調用setter方法即可。
通常,在創建它們之外的范圍內變異對象可能很危險:
http://en.wikipedia.org/wiki/Functional_programming
也就是說,有時你只想在同一個邏輯范圍內封裝一些邏輯,你想要修改傳入的對象的值。所以我要使用的規則是, 只要所有調用代碼都是完整的知道這樣的突變 ,你可以在你傳遞對象的方法中調用對象上的setter方法(並且你應該創建一個setter方法,如果你沒有)。
一般來說,如果你調用一個函數來改變你的代碼庫中多個位置的參數,你會發現它變得越來越容易出錯,這就是函數式編程得到回報的原因。
因此,故事的寓意是:如果您的調用者完全了解此類突變,您可以更改方法中的值,但通常您應該嘗試避免它,而是在其范圍內更改它創建(或創建副本)。
請注意,即使對象作為最終傳遞,它仍然可以更改。 您無法重新分配變量,這通常是(輸入/)輸出參數所需的。
以Jigar Joshis為例:
public void increasePersonAgeByOneMonth(final Person p ){
p = new Person(); //this won't work, which is ok since otherwise the parameter itself would not be changed by the next method
p.setAge(((p.getAge()*12.0) + 1)/12.0); //ok
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.