Scala对象初始化时访问成员的坑

Scala对象初始化时访问成员的坑

本站内容版权属于本人。转载须告知本人,写明出处,并在文首提供指向本站对应文章的链接。
本文链接:Scala对象初始化时访问成员的坑

先看如下代码:

doTest为入口,这个程序的输出是:

null

和期望不一样啊!

原因是Scala以整个类中的内容为构造方法,执行顺序是从基类到子类。运行method时,obj还没有初始化,于是就返回了null

因为obj不可变,所以这里也不能直接初始化。真正的解决方法是使用lazy关键字,它可以让成员在第一次使用时被初始化。话说在这个情况下,比不加lazy还要勤快啊。
于是改写成这样就正常了:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据