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

时间:2012-04-15 08:42:26

标签: java

我猜java没有选项“按参考传递”。但为什么?因为有时非常需要它。

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

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

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

public static class Holder<T> {
    public T value;

    public Holder(T value) {
        this.value = value;
    }
}

private Holder<Object> itsValueCanBeSeenAsPassedByReferencce
= new Holder<Object>("a");

public void doSomething(Holder<Object> holder) {
    holder.value = "b";
}

答案 2 :(得分:0)

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