2017-04-27 161 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),都有可用的包装类。然后你有与你一起工作的物体。