如何在构造函数体中初始化最终字段?

Max*_*kov 26 dart

基本上,这就是我想要做的:

  ClassName
  {
    final OtherClass field;

    ClassName()
    {
      field = new OtherClass(this);
    }
  }
Run Code Online (Sandbox Code Playgroud)

Fox*_*x32 27

在构造函数体中分配最终字段是不可能的.最后一个字段需要在构造函数体,初始化列表或声明中分配:

ClassName
{
    final OtherClass field = new OtherClass(); // Here

    ClassName()
        : field = new OtherClass(); // or here 
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

由于您无法this在初始化列表或声明中使用,因此无法执行您计划执行的操作.

  • 用逗号分隔它们. (4认同)
  • 如果我们有两个最终字段,而第二个字段取决于第一个字段,该怎么办? (3认同)
  • 你如何设置多个最终字段? (2认同)

Cop*_*oad 12

使用 null 安全,您可以通过final不同方式初始化字段: