[英]Final and top-level lazy initialization
请帮我理解它的确切含义:
声明为final的本地,顶级或类变量在第一次使用时初始化
所以这是我的测试代码:
lazyTest(msg) => print(msg);
class Printer{
Printer(msg){
print(msg);
}
final finalClassVariable = lazyTest("final class variable");
}
var globalsAreLazy = lazyTest("top-level");
var lazyInitialized = lazyTest("lazy initialized");
void main() {
final localFinal = new Printer("local final");
var initialize = lazyInitialized;
}
输出:
最终的类变量
当地决赛
懒惰初始化
finalClassVariable
和localFinal
初始化,而只有globalsAreLazy
没有。 lazyInitialized
在我预期的访问时初始化。
类变量是静态字段的另一个名称,因此您需要使finalClassVariable
为静态,以使其finalClassVariable
惰性。
局部变量的文本不正确。 它们在执行声明时初始化,而不是在第一次读取时懒惰。
调用构造函数时,初始化具有初始化表达式的非静态类字段。 他们不懒惰。
finalClassVariable
是一个实例变量,而不是一个类变量。 要使它成为类变量,您必须预先添加static
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.