为什么final可以在构造函数中初始化?
Why final can be initialized in constructor?
我读了 2 篇文章
final
应在声明期间初始化
- 否则它将被视为
blank final variable
,应在构造函数的最后一行分配
否则,你会得到CTE
。
我的问题是,
Why Java allows to assign/initialize value of final in constructor?
因为每个实例都可以拥有自己的 final
值。这只能通过构造函数来完成,因为您只能调用一次构造函数。如果你想确保块只执行一次并且在创建实例时也执行一次,构造函数是唯一的地方。
如果您在 class 中进行硬编码(在声明时初始化 ),那么所有实例都将是相同的并且几乎变成静态的。
我读了 2 篇文章
final
应在声明期间初始化- 否则它将被视为
blank final variable
,应在构造函数的最后一行分配
否则,你会得到CTE
。
我的问题是,
Why Java allows to assign/initialize value of final in constructor?
因为每个实例都可以拥有自己的 final
值。这只能通过构造函数来完成,因为您只能调用一次构造函数。如果你想确保块只执行一次并且在创建实例时也执行一次,构造函数是唯一的地方。
如果您在 class 中进行硬编码(在声明时初始化 ),那么所有实例都将是相同的并且几乎变成静态的。