我读了两件事
final
应在声明期间初始化blank final variable
,应在构造函数的最后一行分配否则,您将获得CTE
。
我的问题是,
为什么Java允许在构造函数中赋值/初始化final值?
答案 0 :(得分:4)
因为每个实例都可以拥有它自己的final
值。而这只能通过构造函数来完成,因为你只能调用一次构造函数。如果你想确保块只执行一次,那么在创建实例时也是如此,构造函数是唯一的地方。
如果你在类中硬编码(在声明时初始化),那对所有实例都是一样的,几乎变成静态的。