按日期:星期六, 10 9 月, 2016

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

    先看如下代码:

    以doTest为入口,这个程序的输出是: null 和期望不一样啊! 原因是Scala以整个类中的内容为构造方法,执行顺序是从基类到子类。运行method时,obj还没有初始化,于是就返回了null。 因为obj不可变,所以这里也不能直接初始化。真正的解决方法是使用lazy关键字,它可以让成员在第一次使用时被初始化。 […]