问题描述
发现有个同事总喜欢将局部方法的参数全部定义为final的,如:public static void debug(final Logger logger, final boolean enableCheck, final Object message, final Throwable t){}在方法体中也并没有用到内部类。我想问的是这样的写法对程序的性能是有有影响?如果有,有什么影响,为什么?我只知道final修饰基本类型,会在编译器优化掉。
解决方案
final并不会给整个程序带来性能的提升,你同事这么做的目的可能只是为了防止别人随意修改参数的值。。。 具体你可以问问你同事,这个可以沟通。。。
解决方案二:
下面两份代码生成的字节码是完全相同的。public class Test {public void test(String aaa) {}}public class Test {public void test(final String aaa) {}}~~~~~~~~~~~~~~~~~~~~~~~~如果不存在内部类的话,局部变量(或者参数)上修饰的final只是在编译期有效。字节码是不包含此信息的,所以和运行效率一点关系也没。对于编译期的影响,final用来限制对变量的再次赋值。这可能是一种编程习惯---一般总是保持函数入口参数不变。另外,对阅读代码的人,可能会清晰一点。(其实也未必,现在的IDE工具,都有标识符高亮的功能,想看到哪个变量都用于什么地方了,高亮后,被使用的地方就一目了然了)
时间: 2025-01-19 17:08:35