2012-04-15 119 views
-2

我猜java没有“通过引用传递”选项。但为什么?因为有时候这是非常需要的。为什么在java中没有办法通过引用传递

+0

Java和C一样,纯粹是一种传值语言。您可以传递引用,但必须按值传递引用。很难想象为什么这是一个问题。为什么你需要通过引用传递值,当你可以通过值传递引用并且或多或少获得相同的效果? – 2012-04-15 08:49:41

+0

我不认为超级用户是讨论语言概念的合适地方。 – Baarn 2012-04-15 08:50:57

+0

顺便说一下,除了原子类型,java中的所有东西都通过引用传递。每个人都有包装类。 – Baarn 2012-04-15 08:53:03

回答

5

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

0

我想你真正需要通过引用的唯一地方是从函数返回多个值,例如C中的out关键字。要在Java中执行此操作,可以创建一个类来容纳对象或使用现有的由许多图书馆提供的配对课程。

同样,你可以通过引用到别的存根对象,然后你可以改变这个对象的引用,看看它是反映在外部:

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"; 
} 
0

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

相关问题