目前,我正在研究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?
您可能想标记一个参数有两个主要原因final
。首先,如果您打算在匿名内部类中使用该参数,则必须对其进行标记,final
以便可以在该类中对其进行引用。实际上,这是将参数标记为final的非常普遍的用例。
标记参数的另一个常见原因final
是防止自己意外覆盖它们。如果您真的不想更改参数,那么也许您应该对其进行标记,final
以便如果您确实进行了更改,则将在编译时得到错误,而不是在运行时发现代码中有错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句