为什么要声明一个函数参数是最终的?

目前,我正在通过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开发,使得有时需要将某些函数参数声明为最终?

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

有两个主要的原因你可能要标记一个争论final 。 首先,如果您计划在匿名内部类中使用参数,则必须将其标记为final以便可以在该类中引用它。 这实际上是最后标记参数的一个非常常见的用例。

标记参数final的另一个常见原因是为了防止自己意外覆盖它们。 如果你真的不想改变参数,那么也许你应该把它们标记为final这样如果你真的这样做了,你会在编译时得到错误,而不是在运行时发现你的代码有错误。