Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中查找视图的最终变量_Java_Android - Fatal编程技术网

Java 在android中查找视图的最终变量

Java 在android中查找视图的最终变量,java,android,Java,Android,为什么绝大多数android示例在findViewById(id)等方法中将返回变量声明为final?例如: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_enc_disp); final ListView listViewEncDisp = (

为什么绝大多数android示例在findViewById(id)等方法中将返回变量声明为final?例如:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_enc_disp);

    final ListView listViewEncDisp = (ListView) findViewById(R.id.listViewEncDisp);
    listViewEncDisp.setOnItemClickListener(this);
}
我知道最后一个变量不能再赋值了,但是我不明白你为什么需要这个好习惯。
提前感谢

在所有变量中盲目添加
final
,这不是一个好习惯。尽可能将字段标记为最终字段是普遍接受的做法。使参数和变量始终是最终的更加主观。我个人避免使用它,因为它只会增加混乱。还要注意的是,将变量设置为final不会对运行时产生影响,在大多数情况下,它纯粹是一个编译时约束。

如果您不想更改对象,应该将其声明为
final
,避免编译时出现随机错误是一个很好的做法


例如,您可以尝试在代码中的其他位置分配另一个值,只是因为您忘记了以前这样做过,然后您可以花费数分钟,有时是数小时来尝试查找错误。

我不明白无意中重新分配变量会如何导致“编译时错误”@SteveKuo
final int x=7;x=8如果第二个赋值是无意的,则不会编译。因此,您可以在编译时而不是稍后的测试中避免该错误。例如,您创建EditText并将其分配给R.id.edit_text1,然后您的同事分配EditText R.id.edit_text2,因为他忘记了您以前做过这件事,仅此而已,您不能再像以前那样使用EditText。“还要注意,将变量设置为final不会对运行时产生影响”,相反的论点可能是,如果您不将参数设置为final,并使用in方法将对象分配给参数变量,更改将不会反映在原始对象上,并且新开发人员经常会遇到这种情况(我同意您的“更主观的观点”)“答案以及不想引发其他讨论,但被认为是有效的反证。”与