2017-04-27 128 views
-2

我知道在C#中存在'out'關鍵字用於在方法中通過引用傳遞參數。在Java中是否存在與「out」關鍵字等效的內容(用於通過引用傳遞參數)?通過引用傳遞參數Java

+1

Java是永遠*按值傳遞*。 *通過引用傳遞*在java中沒有任何東西。更多:[Java是「通過引用傳遞」還是「傳遞值」?](http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by -value?rq = 1) –

+0

沒有java沒有這樣的功能。 –

+6

[是Java的「傳遞引用」還是「傳值」?]可能的重複?(http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass按值計算) – SomeJavaGuy

回答

0

Java中的等價物是使用一個對象來保存引用,以便它可以被返回。這是相對難看和最好的避免,但如果你想要一對一翻譯,你可以做類似的事情。

ReturnValue method(out int arg, out String x); 

轉化爲

int[] argRef = { arg }; 
String[] xRef = { x }; 
// call to 
ReturnValue method(int[] argRef, String[] xRef); 

arg = argRef[0]; 
x = xRef[0]; 
+1

「醜」不是一個工程術語,但是,爲什麼你會這樣稱呼它?我知道,我不應該懷疑情緒,但我很好奇。持有者對象無處不在,有用。有些人可能會發現Java的簡單方法很可愛。或者是你將陣列作爲持有者而不是你認爲「醜陋」的適當持有者對象?我同意使用陣列比使用持有者類型更少慣用和直接。 –

0

不,據我所知,在Java中不存在這樣的東西。

但是,對於大多數類型(如可以用作參數的Integer),都有可用的包裝類。然後你有與你一起工作的物體。