2013-04-27 87 views
0

我必須在我的方法final上聲明一個參數,通過Runnable來訪問它,但是我仍然可以訪問這些方法嗎?我需要編輯一個對象。我似乎無法找到任何可以幫助我解決這個問題的東西,所以希望這不是一個愚蠢的問題。先謝謝了!我可以使用最終對象的方法嗎?

回答

3

一個對象不是final,但它的參考是。因此,您可以輕鬆訪問其方法(如果有)來修改對象。

+1

我真的說這是*變量*這是最終的 - 你不能改變變量的值是一個不同的參考。但這仍然是有幫助的:) – 2013-04-27 08:05:53

0

即使標記爲final,您也可以更改對象的狀態。在標記引用變量final時,不能將其重新分配給另一個對象,但可以通過調用其方法來明確更改已引用的對象的狀態。

0

是的,你可以。檢查這個例子

public class SampleA 
{ 
    private static final SampleB sampleB = new SampleB(); 
    public static void main(String[] args) 
    { 
     System.out.println(sampleB.toString()); 

     sampleB.setM1("1"); 

     System.out.println(sampleB.toString()); 

    } 

} 



public class SampleB 
{ 
    private String m1; 

    private String m2; 

    public String getM1() 
    { 
     return m1; 
    } 

    public void setM1(String m1) 
    { 
     this.m1 = m1; 
    } 

    public String getM2() 
    { 
     return m2; 
    } 

    public void setM2(String m2) 
    { 
     this.m2 = m2; 
    } 

    public String toString() 
    { 
     final String TAB = " "; 

     String retValue = "SampleB (" 
      + "m1 = " + this.m1 + TAB 
      + "m2 = " + this.m2 + TAB 
      + ")"; 

     return retValue; 
    } 
} 
相關問題