为什么将函数参数声明为final?

scriptocalypse:

目前,我正在研究Sams出版的《 24小时自学Android应用程序开发》一书。我是Java,Android或其他方面的新手。我在ActionScript 3中有非常扎实的背景,它与Java有足够的相似性,因此语言本身并不难掌握,但是我对书中某些代码示例的原理仍然存在一些疑问。例如,以下是第9小时的示例代码附带的函数:

private void processScores(final TableLayout scoreTable, 
      XmlResourceParser scores) throws IOException, XmlPullParserException{

在此函数签名中,作者已将scoreTable参数声明为final。我为他们为什么这么做感到困惑。我什至不会尝试为函数参数scoreTable分配一个新值(在ActionScript中被认为是不好的做法)。此外,在我研究或移植到AS3的任何实际Java中,我实际上都没有看到任何人这样做。

关于Android开发,是否有某些特定要求使得有时必须将某些函数参数声明为final?

为什么将TableLayout对象声明为final,而不声明为XmlResourceParser?

templatetypedef:

您可能想标记一个参数有两个主要原因final首先,如果您打算在匿名内部类中使用该参数,则必须对其进行标记,final以便可以在该类中对其进行引用。实际上,这是将参数标记为final的非常普遍的用例。

标记参数的另一个常见原因final是防止自己意外覆盖它们。如果您真的不想更改参数,那么也许您应该对其进行标记,final以便如果您确实进行了更改,则将在编译时得到错误,而不是在运行时发现代码中有错误。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么将Optional <T>声明为最终类?

为什么将接口声明为抽象?

为什么在Java中将String类声明为final?

为什么将Java接口方法声明为抽象方法?

为什么我们将Loggers声明为static final?

为什么将Java常量声明为静态?

为什么允许将通用数组声明为实例变量?

为什么将Mapper和Reducer类声明为静态?

将函数的参数声明为final:为什么以及何时需要它?

为什么java.util.Scanner类声明为'final'?

为什么将main声明为数组可以编译?

为什么将CompletableFuture.allOf声明为CompletableFuture <Void>?

为什么在将main声明为`int main(void)`时传递命令行参数时没有错误?

为什么将内置库函数声明为标识符名称是合法的?

为什么C ++编译器可以将函数声明为constexpr,而不能将其声明为constexpr?

为什么将变量声明为通配符类型

为什么将已实现的接口方法声明为“ public”?

为什么将类的特殊函数显式声明为“默认”

将函数参数类型声明为自动

将模板函数声明为非模板函数的参数

为什么不能将函数的参数声明为val或var

在Typings声明中将函数声明为参数

为什么不允许将变量声明作为参数,而将函数声明作为参数?

为什么在C#8.0中将局部函数声明为static

如果将A的通用子类型声明为return参数,为什么不能返回A的具体子类型?

将函数声明为指针的目的是什么?

为什么将匿名JavaScript函数声明为函数参数?

为什么将Thread的isAlive()方法声明为本机?

为什么不能在没有参数的情况下传递声明为需要参数的swift函数?