2012-04-15 106 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中,如果調用方法將對象的引用作爲參數傳遞給被調用的方法,則傳入的引用將首先被複制,然後傳遞給被調用的方法。傳入的原始引用和複製的引用都將指向同一個對象。因此,無論您使用哪個參考,您總是會修改相同的原始對象,這也是傳遞參考的工作方式。