2013-08-27 21 views
2

說我有代碼如果我正在修改它,是否需要從方法返回一個對象?

if(some statement){ 
    object1.setSomeField("abc"); 
} 

我能做到這一點?現在

public void methodToSetField(SomeObject object1){ 
     //provide some logic for setting 
     object1.setSomeField("abc") 
    } 

    if(some statement){ 
     this.methodToSetField(object1); 
    } 

我的問題是, 如果我想更換第一段代碼,用方法,我需要回到object1還是足以設置。

+0

你不需要返回對象 – Cris

+0

沒有。你不需要返回。 – AmitG

+1

你知道你可以運行它並測試....看看它是否有效 – Nimrod007

回答

1

這很好。在java中,當你傳遞一個對象時,你實際上並沒有傳入「對象」,而是傳遞給對象的引用(或指針)。

你的決定將直接影響你的,只要你不這樣做已經通過對象的任何修改:

SomeObject someObject = new SomeObject(); 

編輯:Is Java "pass-by-reference" or "pass-by-value"?

2

不,您不需要,因爲您正在處理相同的內存對象。所以調用代碼,如果在調用你的方法之後使用這些值,它應該會看到更新。

1

您正在通過object1的引用,所以不需要返回它。它會改變。

請參見下面的代碼:

public void methodToSetField(SomeObject object1){ 
     //provide some logic for setting 
     object1.setSomeField("abc") 
    } 

public object1Type methodToSetField(SomeObject object1){ 
      //provide some logic for setting 
      object1.setSomeField("abc"); 
      return object1; 
     } 

在這兩種情況下,當你執行代碼object1更新。

所以本質上是,不需要return

+5

不是那個:)通過值傳遞參考 – Matthias

+0

@Matthias是的,有史以來最大的混亂。 :) –

+0

希望只爲初學者。 – JNL

0

它會起作用,因爲當你處理同一個對象時,你傳遞了被引用對象的地址位置的副本。

相關問題