我可以在Java中通过引用传递参数吗?

我想要与C#ref关键字类似的语义。

回答:

Java令人困惑,因为一切都是通过值传递的。但是,对于引用类型的参数(即不是原始类型的参数),引用本身是通过值传递的,因此它似乎是按引用传递的(人们常常声称它是)。情况并非如此,如下所示:

Object o = "Hello";

mutate(o)

System.out.println(o);

private void mutate(Object o) { o = "Goodbye"; } //NOT THE SAME o!

将打印Hello到控制台。如果要打印上面的代码,Goodbye可以使用如下所示的显式引用:

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中通过引用传递参数吗? 的全部内容, 来源链接: utcz.com/qa/410807.html

回到顶部