php与网站建设,p2p理财网站开发要求,淘宝网现状 网站建设,网站提升流量【0】README
0.1#xff09;本文转自 http://blog.csdn.net/fykhlp/article/details/6236316#xff1b; 【1】正文如下 这个错误是说变量初始化出现问题#xff0c;通常出现在静态变量尤其是单例模式。这种问题往往是初始化顺序不对造成的#xff0c;下面举个简单的例子。…【0】README
0.1本文转自 http://blog.csdn.net/fykhlp/article/details/6236316 【1】正文如下 这个错误是说变量初始化出现问题通常出现在静态变量尤其是单例模式。这种问题往往是初始化顺序不对造成的下面举个简单的例子。 [java] view plain copy import java.util.HashMap; import java.util.Map; public class Example { private static Example example new Example(); private static MapInteger,Boolean test new HashMapInteger, Boolean(); private Example() { test.put(1, true); } public static Example getInstance() { return example; } } 如果你在别的类调用getInstance就会报错ExceptionInInitializerError。这是因为类加载时不会为实例变量赋值对象创建时不会为静态变量赋值。我们调用getInstance时此类就开始加载加载的时候不会为实例变量赋值但是会按顺序给静态变量赋值所以先为example赋值然后为test赋值即初始化。但为example赋值时出现了个小插曲它会调用构造方法创建一个对象。对象创建时不会为静态变量test赋值而构造器内却已经调用test于是报错了。 改为 [java] view plain copy private static MapInteger,Boolean test new HashMapInteger, Boolean(); private static Example example new Example(); 就可以了。