关键字final有什么用?

sat*_*oid 11 java android final

在下面的代码中,如果我从EditText中删除关键字final,我在第(6)行中遇到错误,我将EditText对象(et)传递给intent ...我必须在这里知道final关键字的重要性...

final EditText et=(EditText)findViewById(R.id.t);
        Button b=(Button)findViewById(R.id.b1);
        b.setOnClickListener(new Button.OnClickListener(){
            public void onClick(View v)<br>
            {
            Intent on=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+et.getText()));
            startActivity(on);
            }
        });
Run Code Online (Sandbox Code Playgroud)

Wil*_*ill 21

最终本质上意味着变量et不会在任何时候重新分配并保持不变.这意味着内部类(如侦听器)可以相信它不会被其他可能导致各种麻烦的线程重新分配.

final也可用于修改方法或类定义,这意味着该方法不能被子类覆盖,或者该类无法扩展.


Vla*_*nov 15

这是因为你在这里使用了闭包.这意味着内部类使用了内部类的上下文.要使用它,变量应该被声明为final,以便不被更改.

在这里查看更多.