有人告诉我,我误解了final.的影响.final关键字有什么影响?
以下简要概述了我的想法,我知道:
Java final修饰符(又称聚合关系)
原始变量:只能设置一次.(内存和性能增益)
对象变量:可以修改,最终适用于对象引用.
字段:只能设置一次.
方法:不能被覆盖,隐藏.
课程:不能扩展.
垃圾收集:将强制Java世代垃圾收集标记扫描双扫.
Can's和Cant's
- 可以使克隆失败(这既好又坏)
- 可以使不可变的原语aka const
- 可以使空白不可变 - 在创建时初始化也称为readonly
- 可以使对象浅不可变
- 可以使范围/可见性不可变
- 可以使方法调用开销更小(因为它不需要虚拟表)
- 可以使方法参数用作final(即使你不是)
- 可以使对象线程安全(如果对象被定义为final,它不会使方法参数最终)
- 可以进行模拟测试(不是你可以对它做任何事情 - 你可以说错误是有意的)
- 不能交朋友(与其他朋友互相变化,休息不变)
- 以后不能将变为不可变的变量(但可以像工厂模式一样修复)
- 无法使数组元素成为不可变的,也是不可变的
- 无法创建对象的新实例(这既好又坏)
- 无法进行序列化工作
没有替代品final,但有包装+私人和枚举.