Java final修饰符

6 浏览
0 Comments

Java final修饰符

我被告知,我对final的影响有误解。那么final关键字有什么影响呢?

以下是我所了解的简要概述:

Java final修饰符(也称为聚合关系)

基本变量:只能设置一次(内存和性能增益)

对象变量:可以修改,final适用于对象引用

字段:只能设置一次

方法:不能被覆盖、隐藏

:不能被扩展

垃圾回收:将强制Java分代垃圾回收进行双重扫描。

可以和不可以

  • 可以使克隆失败(这既有好处也有坏处)
  • 可以使基本类型不可变,也称为const
  • 可以使空白不可变 - 在创建时初始化,也称为readonly
  • 可以使对象浅不可变
  • 可以使作用域/可见性不可变
  • 可以减小方法调用开销(因为不需要虚拟表)
  • 可以使方法参数作为final使用(即使它们不是)
  • 可以使对象线程安全(如果对象被定义为final,则不会使方法参数为final)
  • 可以进行模拟测试(尽管你对此无能为力-你可以说bugs是有意的)
  • 无法使友元(对其他友元可变,对其他人不可变)
  • 无法使可变对象在后来变为不可变(但可以使用工厂模式像fix那样实现)
  • 无法使数组元素不可变,也称为深不可变
  • 无法创建对象的新实例(这既有好处也有坏处)
  • 无法使序列化工作

final没有替代品,但可以使用包装器+私有和枚举。

0