Kaz*_*ita 4 java dependency-injection guice
在官方文档中,可以看到这句话关于字段注入。
避免使用最终字段的字段注入,这具有弱语义。
为什么带有final修饰符的字段注入没有意义?有人能解释一下吗?
您本质上是在问以下问题:“弱语义”是什么意思?
一般来说,正如您所指出的,“语义”就是“意义”。此外,在编程中语义指的是:
对编程语言含义的严格研究。
当我们说“注入最终字段的语义较弱”时,这意味着“注入最终字段使得很难严格推理程序的含义”。
为什么?正如蜘蛛鲍里斯的评论中所指出的,“弱语义”指的是这种行为:
在[序列化之外]的任何其他上下文中使用[使用反射设置最终字段]可能会产生不可预测的影响,包括程序的其他部分继续使用该字段的原始值的情况”
这意味着,如果您使用反射来设置final字段,则程序的含义(语义)会变得模糊,因为它现在具有不可预测的行为。
不可预测的行为正如链接文档中提到的那样:程序的其他部分可以继续使用该final字段的原始值。程序的哪些部分正在使用原始值以及哪些部分正在使用重新分配的值变得不清楚。
| 归档时间: |
|
| 查看次数: |
2709 次 |
| 最近记录: |