使用“final”进行Class实例化

时间:2013-06-08 21:23:41

标签: dart

前几天(下面)我遇到了以下代码,并想知道它是否在Dart中实现了任何重要的事情,而不是类实例化无法更改。我确实阅读了一些关于Java的SO帖子,但是它们似乎没有结论,并不一定适用于Dart。我不会那样编码(最后),但也许我应该。在这个例子中使用“final”有什么重大意义吗?它实现了什么?

import 'dart:math';

final _random = new Random();

2 个答案:

答案 0 :(得分:5)

来自Dart: Up and Running

  

如果您从不打算更改变量,请使用finalconst,而不是var或者除了类型之外。 final变量只能设置一次; const变量是编译时常量。

     

声明为final的本地,顶级或类变量在第一次使用时初始化。

这里使用final有三个好处:

  1. 如果某些代码错误地尝试再次设置_random,则会产生错误。
  2. 其他程序员(或以后的同一程序员)也更清楚_random永远不会被更改。
  3. _random在使用之前未初始化,因此应用程序将更快启动。
  4. 出于这些原因,我认为这是final的良好用途;当然,没有它,代码就会“工作”,但这样做会更好。

    简而言之,我认为本书提供了合理的建议:“如果您从未打算更改变量,请使用finalconst”。

答案 1 :(得分:1)

来自documentation

声明为final的本地,顶级或类变量在第一次使用时初始化。最终变量的延迟初始化可以帮助应用程序更快地启动。