Java中应该多使用final关键词_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java中应该多使用final关键词

Java中应该多使用final关键词

 2013/7/22 0:40:19  davidlrj1024  程序员俱乐部  我要评论(0)
  • 摘要:原文翻译自http://www.omsn.de/blog/java-devs-why-you-should-use-the-final-modifier-more-often原文很简单,我在这里只大概总结下它的观点和我自己的一些想法。首先,原文认为应该给类中未在声明中初始化的域加上final关键字,这样可以避免运行时出现NullPointerException.这是因为对于未在声明中初始化的域,如果将其加上final关键字,编译器会强制要求在构造函数中初始化
  • 标签:使用 Java 关键词

原文翻译自http://www.omsn.de/blog/java-devs-why-you-should-use-the-final-modifier-more-often

?

原文很简单,我在这里只大概总结下它的观点和我自己的一些想法。

?

首先,原文认为应该给类中未在声明中初始化的域加上final关键字,这样可以避免运行时出现NullPointerException. 这是因为对于未在声明中初始化的域,如果将其加上final关键字,编译器会强制要求在构造函数中初始化,这样不会引起运行时出现NullPointerException。对于这一点,我个人不是非常赞同。通常在工程中未在声明时初始化很有可能是出于lazy initialization的需要,即由于初始化变量所需要的资源开销比较大,所以只在需要的时候才初始化变量,这种时候加上final关键字会适得其反。

?

第二,原文认为在一些不会被子类override的函数上加上final关键字会增加性能,原因有二:fianl函数省去了jvm调用的时候检查的时间,即java虚拟机在调用函数的时候不必再去检查子类的实现;final函数可以被inline化。对于这一点,我个人非常赞同,因为首先,final关键字不会引起重构上的麻烦,如果某个final函数需要被子类override了,只需要去掉final关键字就行;其次,java的编码规范建议使用getter和setter函数来将field暴露给掉用者,而这类函数通常不会被子类重载,而且开销很小,如果加上final关键字,相信应该能提升程序的性能。

同理,如果类被加上final关键字的话,所有的函数默认也会变成final,这对不需要被重载的类来说也是一个提升性能的方法。

?

发表评论
用户名: 匿名