private final UserDao userDao = new UserDaoImpl();
中为什么加上final会更好?为什么会在推荐修改为加上final,对性能有什么影响?
final修饰变量表示常量,不能被更改;修饰类表示类是最终类,不能被继承。对性能没什么影响,主要是对外封闭了修改。
在Java中,关键字 final 的意思是终态,可以用于声明变量、方法和类,分别表示变量不可变,方法不可被覆盖,类不可被继承
使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。
因此,如果只有在想明确禁止 该方法在子类中被覆盖的情况下才将方法设置为final的。
类的private方法会隐式地被指定为final方法
final变量不能被更改;final修饰的类不能被继承,是一种编程技巧,没啥性能的考虑