2013-04-27 3 views
0

Мне нужно объявить параметр в моем методе final для доступа к нему через Runnable, но могу ли я получить доступ к методам? Мне нужно немного отредактировать объект. Кажется, я не могу найти ничего, что могло бы помочь мне в этом вопросе, поэтому, надеюсь, это не глупый вопрос. Заранее спасибо!Могу ли я использовать методы конечного объекта?

ответ

3

Объект не final, но его ссылка есть. Таким образом, вы можете легко получить доступ к своим методам (если есть), чтобы изменить объект.

+1

Я бы сказал, что это * переменная *, которая является окончательной, вы не можете изменить значение переменной как другую ссылку. Но это все еще полезно как есть :) –

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; 
    } 
} 
Смежные вопросы