我可以访问最终对象的方法吗?

时间:2013-04-27 08:03:34

标签: java object const final

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

3 个答案:

答案 0 :(得分:3)

对象不是final,但它的引用是。因此,您可以轻松访问其方法(如果有)以修改对象。

答案 1 :(得分:0)

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

答案 2 :(得分: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;
    }   
}