为什么没有办法在java中通过引用传递

我猜java没有选项“通过引用传递”。但为什么? 因为有时它非常需要。

任何时候您觉得需要通过引用传递值,而是通过值传递引用。 虽然Java没有“通过引用传递”机制,但它确实有引用。 所以只需按值传递这些引用。

我想你真正需要通过引用传递的唯一地方是从函数中返回多个值,如C中的out关键字。要在Java中执行此操作,您可以创建一个类来保存对象或使用现有的Pair类提供的很多图书馆。

类似地,您可以传递引用其他内容的存根对象,然后您可以更改对象中的引用并查看它在外部反映:

 public static class Holder { public T value; public Holder(T value) { this.value = value; } } private Holder itsValueCanBeSeenAsPassedByReferencce = new Holder("a"); public void doSomething(Holder holder) { holder.value = "b"; } 

在Java中,无论您传递什么类型的参数,相应的参数(原始变量或对象引用)都将获得该数据的副本,这正是值传递(即按值复制)的工作原理。 在Java中,如果调用方法将对象的引用作为参数传递给被调用的方法,则首先复制传入的引用,然后将其传递给被调用的方法。 传入的原始引用和复制的引用都将指向同一个对象。 因此,无论您使用哪个引用,您都将始终修改相同的原始对象,这也是传递引用的工作方式。