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



我读了两件事

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

否则,你会得到CTE.

我的问题是,

为什么Java允许在构造函数中分配/初始化final的值?

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

如果您在类中进行硬编码(在声明时初始化(,则所有实例都将相同,并且几乎变为静态。