一个Class初始化的问题

public Class T extends Parent{
private static T instance = new T();
public static SummaryConnectionPool getInstance() {
return instance;
}
static Config config = new Config();

public T(){
super( config );
}
};
然后在另一个类里, 调用:
T t = new T();
然后就报NullPointerExcpetion.

点解: 问题处在instance这个静态对象上.
一个类的静态成员和在类实例化比较独立. 静态成员在被引用的时候就会初始化, 而初始化的顺序按照静态成员在源码的书写顺序. 如果某个静态对象A初始化参数引用了写在它后边的静态成员B, 这个时候后边的静态成员B并没有初始化, A得到的就是个null, 于是, NullPointerException 就可能被抛出了.

Comments

Popular posts from this blog

看了几款项目管理工具

做真实的自我,是个坏主意

How to reset mysql root password for Mysql Server 5.7 on Ubuntu