2013-04-27 86 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; 
    } 
} 
相关问题