2016-12-05 54 views
0

變量的引用的我不知道,如果標題是最好的價值,但我想這樣做可以在這個例子中更改在Java

class TestClass { 
    public String foo = "foo" 

    public void makeFooBar() { 
     String bar = foo; 
     bar = "bar"; 

     System.out.println(foo); //should print "bar" 
    } 

} 

這顯然是一個人爲的例子來說明什麼,但它說明了這一點。我想通過改變引用foo的bar的值來改變foo的值。那是可能的嗎?

+4

不在Java中。 – Kayaman

+0

你可以如果你會扭曲它,所以它成爲一個對象。但在java中不存在普通字段的引用鏈接。 – n247s

+0

好吧,我將不得不改變我的代碼,所以它不需要。謝謝。 – richbai90

回答

1

如果您想在多個位置更新某個值(例如,使用包裝器對象),這可能是一種方法。當然,有更多更奇特的方式來完成相似的事情。

class TestClass { 
    public Wrapper<String> foo = new Wrapper("foo"); 

    public void makeFooBar() { 
     Wrapper<String> bar = foo; 
     bar.set("bar"); 

     System.out.println(foo); //should print "bar" 
    } 

    public static class Wrappper<T> 
    { 
      T value; 

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

     public T get() { return this.value; } 
     public void set(T newValue) { this.value = newValue; } 
     @override 
     public String toString() { return value.toString(); } 
    } 
} 

基本上任何基元類型都不能通過引用傳遞。 Althoug String在技術上不是原始類型,但java確實對待它更特別一些。 (閱讀內部字符串會給你一個很好的見解,在這個頁面有一個很好的解釋,包括一些可視化的例子:http://www.journaldev.com/797/what-is-java-string-pool