final 关键字在 Android 中的工作原理

How final keyword works in Android

我知道在 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);

它是 java...final 关键字在 android 或 android 中总是相同的。这取决于你申请什么。

例如

应用于变量意味着它在初始化后不能改变。

应用于方法意味着它不能重载方法。

应用于 class,您不能覆盖 class。

对于变量,final关键字意味着它基本上是一个常量。在这种情况下,因为它是一个对象,所以不能更改其引用。所以基本上,如果您再次尝试分配给 final TextView campoTexto,编译器将抛出错误。

最终只锁定引用。不是引用中的对象和方法。

在Android中就像在Java中一样。

例如final int a = 5,则a不可更改

决赛final TextView campoTexto;那么campoTexto不能重新定义,但是里面的方法,like setText or others,是允许使用的。

更全面的例子是Final Deque<Integer> stack = new ArrayDeque<>();那么stack不能重新定义,但是stack.push, pop等方法可以使用,所以stack里面的对象是可以改变的