在一个类的静态变量被完全初始化完前,调用其静态成员函数

java中,如果两个类的static initialization block相互调用怎么办?

一个类的static initialization block应该在一个类初次被使用时被调用。假如我有一个class A,它有一个static initialization block和一个名叫func的static function。还有一个叫做B的class,与A有同样的结构。

但是,特殊之处在于,如果A的static initialziation block会调用B.func这个静态函数,此时,因为发现class B的静态成员还没有初始化过,那么就会调用B的static initialization block,再如果此时B的这个block也调用A.func,那么此时该怎么办?

它会先执行A的static initialization block,执行到一半的时候再去执行B的static initialization block,此时,在A的所有变量尚未初始化完之前,进入A.func。OMG!

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥