本教程解释了如何在构造函数中初始化最终类变量。
final变量只被初始化一次,只用于在运行时初始化一个变量。你可以使用静态const进行编译时的初始化值
让我们声明最终类字段,并在构造函数中用值初始化字段。
下面的程序给出了错误。最终字段'id'未被初始化,并且错误。设置器'id'没有为'Employee'类定义。
class Employee {
final int id;
Employee() {
this.id = 5;
}
}
void main() {
Employee emp = new Employee();
}
那么,你如何在构造函数中分配最终变量?
Dart为构造函数提供了一种特殊的语法。
如何在构造函数中初始化最终属性?
Dart没有提供在构造函数体中初始化最终变量的方法。
你可以用新的语法在构造函数参数中进行初始化,如下所示
语法
Constructor(this.finalvariable)
上面的代码程序可以用新的语法重写。
class Employee {
final int id;
Employee(this.id) {}
}
void main() {
Employee emp = new Employee(5);
}
接下来,让我们看看如何在构造函数中添加final private variables 初始化,如果你想保持最终变量的私有性,下面的语法会更好一些
用下划线(_)作为变量名,声明一个变量为私有。
class Employee {
final int _id;
Employee(int id) : _id = id;
}
void main() {
Employee emp = new Employee(51);
}
接下来,你也可以使用{} 语法为最终字段添加default parameter data ,以便在值没有被传递时提供默认值。
可选的最终变量初始化示例
class Employee {
final int id;
Employee({this.id = 0});
}
void main() {
Employee emp = new Employee(5);
}
最后,你可以在以后的运行时使用laten关键字来分配最终变量
在这个例子中,使用late 声明一个最终变量。变量在运行时被分配。
class Employee {
late final int id;
Employee(int j) {
id = j * 2;
}
}
void main() {
Employee emp = new Employee(5);
}