如果将“ final”放在变量之前,该怎么办?

杰克·洛夫(Jack Love):

一个非常基本的问题,但是,如果将“ final”放在诸如下面的变量之前,它会做什么?

final EditText myTextField = (EditText) findViewById(R.id.myTextField);

怎么final办?

安德鲁·斯旺(Andrew Swan):

简短答案

停止将“ myTextField”变量分配给其他对象。

长答案

  • 不要停止对“ myTextField”变量进行突变,例如,将其字段设置为新值。
  • 使代码更具可读性(IMHO),因为读者不必怀疑以后是否会在代码中重新分配“ myTextField”变量。
  • 防范错误类别(错误地重新分配变量)的错误类别(使实例不可变,仅在较小范围内存在相同的原因)。

出于上述原因,我始终将“ final”修饰符尽可能应用于静态字段,实例字段,局部变量和方法参数。它确实使代码有些膨胀,但是对我来说值得额外的可读性和鲁棒性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果AsyncTask被取消,该怎么办?

如果GOMAXPROCS太大,该怎么办?

如果孩子在父母调用wait()之前退出,该怎么办?

如果更改了本地文件但在添加新文件之前该怎么办?

基于游标的分页-如果删除“之前”或“之后”对象该怎么办?

如果线程在调用pthread_join之前退出,该怎么办

使用类的方法更新类变量的实例是否正确?如果是,该怎么办?

如果未将Python输入值分配给变量,该怎么办?

如果if / else语句中有2个布尔变量为真,该怎么办

如果不存在该物品该怎么办?

如果我将Flutter主渠道用于生产应用程序该怎么办?

如果将访问控制应用于朋友该怎么办?

如果我不小心将敏感数据放入Github,该怎么办?

如果我没有将交易ID发送到PayPal PDT,该怎么办?

如果处理程序在Looper.prepare()之后但在Looper.loop()被调用之前将消息发布到线程,该怎么办?

如果有人在我要求最后一个插入ID之前将新数据插入数据库,该怎么办?

如果建立连接失败,该怎么办?

如果违反了Swing的线程策略,该怎么办?

如果div文字等于某些文字,该怎么办?

如果存在多个提交案例,我该怎么办

如果isAvailableForServiceType方法返回NO,该怎么办

如果销毁选项类型内的对象该怎么办?

如果bash停止回声,该怎么办?

如果忘记启用EFI分区该怎么办?

如果存在货币,我该怎么办?

如果我的发行证书过期,该怎么办?

如果“包装要求”过长,该怎么办?

如果找不到302 URI,该怎么办?

如果自动增量值达到极限,该怎么办?