我知道在Java中我们使用final
关键字来变量或其他东西来使其值不被改变。
使用final
有什么不同,如下例所示?
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView campoTexto = (TextView) findViewById(R.id.campoTexto);
Button botaoTexto = (Button) findViewById(R.id.botaoTexto);
Button botaoCor = (Button) findViewById(R.id.botaoCor);
final RelativeLayout fundoTela = (RelativeLayout) findViewById(R.id.fundoTela);
答案 0 :(得分:20)
这是java ... final
关键词在android中总是相同或者在android中都不一样。这取决于你申请的内容。
例如
应用于变量意味着初始化后无法更改。
应用于方法意味着它不能重载方法。
申请课程,你不能覆盖该课程。
答案 1 :(得分:3)
对于变量,final
关键字表示它基本上是常量。在这种情况下,由于它是一个对象,因此无法更改其引用。所以基本上如果你再次尝试分配给final TextView campoTexto
,编译器就会抛出错误。
答案 2 :(得分:2)
最终只锁定引用。不是引用中的对象和方法。
在Android中,它就像Java中的方式一样。
例如,final int a = 5
,则无法更改。
最终final TextView campoTexto
;然后不能重新定义campoTexto,但允许使用内部方法like setText or others
。
更全面的示例是Final Deque<Integer> stack = new ArrayDeque<>();
然后无法重新定义堆栈,但允许使用stack.push, pop
和其他方法,因此允许堆栈内的对象更改