2013-02-04 81 views
-2

我想了解最好的方式共享引用,我不知道我已經完全理解它。如何描述共享參考?

我對共享引用的理解是當我有一個集合,並且在代碼中存在兩個或多個對該集合的引用時,如果在其中一個引用中發生更改,另一個引用不會相同並生成錯誤,正確?

問候

+4

我們不知道「共享參考」是什麼意思。通常,「共享引用」意味着只有一個對象可以引用兩個或更多的東西。由於只有一個對象,所以通過一個引用來改變它,與通過另一個對象改變效果的效果完全相同。但是你可能用「共享參考」來表達別的意思。 –

+0

也在研究類不變式,但不會對今天更感興趣;) – user1501127

回答

1

如果這些引用的一個改變對方的將是不一樣的,併產生錯誤的,正確的?

正確的,但部分。如果集合的內容通過一個引用而改變,其他引用也將指向更新的內容。

你的另一部分說,它會產生錯誤。好吧,這取決於邏輯。

class A 
{ 
    public static void main(String[] args) 
    { 
     A a1 = new A(); 
     A a2 = a1; 
     A a3 = a2; 
    } 
} 

在這裏,所有的引用都指向同一個對象。所以,如果對象被修改a1,其他參考a2,a3也將看到修改狀態。

1

想象一下,你和你的兄弟是在馬戲團,你每贏得一個氣球和一支筆的獎金。你在氣球上畫一張滿臉幸福的臉,你的兄弟會在他的臉上畫一張悲傷的臉。

現在你做都共享引用。你們每個人都可以改變你的氣球上繪製的內容而不改變其他的。

可悲的是你不小心鬆手你的氣球,但你的哥哥,因爲他愛你,提供了與大家分享他的氣球,所以他繫上第二個字​​符串,並用手該字符串給你。您現在有共享引用到一個氣球。

現在,任何更改都在臉上做的氣球會被你們兩個共享。有一個氣球和兩個琴絃。如果你在氣球上畫一張滿臉幸福的臉,你的兄弟也會在氣球上找到一張笑臉,因爲它們是相同的氣球。