我可以通过Java的引用传递参数? [英] Can I pass parameters by reference in Java?
本文介绍了我可以通过Java的引用传递参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想类似 C#
语义的 REF
关键字。
I'd like semantics similar to C#
's ref
keyword.
推荐答案
由于一切都按值传递Java是令人困惑。然而,对于引用类型的参数的 的(即不是原始类型的参数),它的这是按值传递引用本身的,因此它的出现是传递按引用(人们经常声称它是)。不是这种情况下,如由以下
Java is confusing because everything is passed by value. However for a parameter of reference type (i.e. not a parameter of primitive type) it is the reference itself which is passed by value, hence it appears to be pass-by-reference (and people often claim that it is). This is not the case, as shown by the following:
Object o = "Hello";
mutate(o)
System.out.println(o);
private void mutate(Object o) { o = "Goodbye"; } //NOT THE SAME o!
将打印您好
到控制台。如果你想上面的code打印再见了
的选项是的使用显式引用的如下:
Will print Hello
to the console. The options if you wanted the above code to print Goodbye
are to use an explicit reference as follows:
AtomicReference<Object> ref = new AtomicReference<Object>("Hello");
mutate(ref);
System.out.println(ref.get()); //Goodbye!
private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
这篇关于我可以通过Java的引用传递参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文