为什么final可以在构造函数中初始化?

Why final can be initialized in constructor?

我读了 2 篇文章

  1. final 应在声明期间初始化
  2. 否则它将被视为 blank final variable,应在构造函数的最后一行分配

否则,你会得到CTE

我的问题是,

Why Java allows to assign/initialize value of final in constructor?

因为每个实例都可以拥有自己的 final 值。这只能通过构造函数来完成,因为您只能调用一次构造函数。如果你想确保块只执行一次并且在创建实例时也执行一次,构造函数是唯一的地方。

如果您在 class 中进行硬编码(在声明时初始化 ),那么所有实例都将是相同的并且几乎变成静态的。