我有一個場景,我想設置一個Boolean
對象,然後在方法的後面的構造函數中使用它的booleanValue()
。但是,對象的設置範圍不同。它被設置在一個方法中,該方法首先實例化對象。基於我對Java如何傳遞基元和對象參數以及在線閱讀多篇文章(如this)的理解,當一個對象被傳入一個方法時,其屬性通過引用傳遞,並且被調用方法的任何改變都應該反映在調用方法執行完成後調用方法。但是我注意到,當被調用方法完成時,那裏的任何更改都不會在調用方法中生效。java布爾值在被調用的方法中沒有改變
這裏是我的方案的快照:
private CustomObject1 callingMethod(){
Boolean b = Boolean.TRUE;
List<CustomObject2> list = this.calledMethod(b);
//Create CustomObject1 with b.booleanValue() as one of the arguments in the constructor
}
private List<CustomObject2> calledMethod(Boolean b){
...
...
if(condition){
b = Boolean.FALSE;
}
...
...
}
通過代碼達到CustomObject
創作b.booleanValue()
始終是真實的時候,即使在callingMethod()
if語句是真實的Boolean
設置爲false在那個方法。
我不願意將調用方法的返回類型更改爲boolean
,因爲它需要更改可能調用此方法的其他代碼位。目前他們只需要簽名更改,但返回類型的變化需要更多的工作,因爲需要維護邏輯(即填充列表,然後使用它進行操作)
該鏈接非常有見地。我鼓勵任何看到這個的Java程序員閱讀它。 –