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里面的对象是可以改变的
我知道在 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里面的对象是可以改变的