0

我必须在我的方法 final 上声明一个参数才能通过Runnable访问它,但我仍然可以访问这些方法吗?我需要稍微编辑一下对象。我似乎找不到任何可以帮助我解决这个问题的东西,所以希望这不是一个愚蠢的问题。先谢谢了!

4

3 回答 3

3

对象不是final,但它的引用是。所以你可以很容易地访问它的方法(如果有的话)来修改对象。

于 2013-04-27T08:04:48.360 回答
0

您可以更改对象的状态,即使它被标记为final。当你标记一个引用变量final时,你不能将它重新分配给另一个对象,但你绝对可以通过调用它的方法来改变它已经引用的对象的状态。

于 2013-04-27T08:07:31.827 回答
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;
    }   
}
于 2013-04-27T08:13:04.410 回答