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

时间:2018-03-08 11:18:53

标签: java object constructor final compile-time

我读了两件事

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

    我的问题是,

      

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

1 个答案:

答案 0 :(得分:4)

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

如果你在类中硬编码(在声明时初始化),那对所有实例都是一样的,几乎变成静态的。