java.lang.ExceptionInInitializerError的原因
来源:互联网 发布:taft地震波数据下载 编辑:程序博客网 时间:2024/06/08 08:52
转载自:http://blog.csdn.net/fykhlp/article/details/6236316
这个错误是说变量初始化出现问题,通常出现在静态变量尤其是单例模式。这种问题往往是初始化顺序不对造成的,下面举个简单的例子。
import java.util.HashMap; import java.util.Map; public class Example { private static Example example = new Example(); private static Map<Integer,Boolean> test = new HashMap<Integer, Boolean>(); private Example() { test.put(1, true); } public static Example getInstance() { return example; } }
如果你在别的类调用getInstance,就会报错ExceptionInInitializerError。这是因为类加载时不会为实例变量赋值,对象创建时不会为静态变量赋值。我们调用getInstance时,此类就开始加载,加载的时候不会为实例变量赋值,但是会按顺序给静态变量赋值,所以先为example赋值,然后为test赋值即初始化。但为example赋值时出现了个小插曲,它会调用构造方法创建一个对象。对象创建时不会为静态变量test赋值,而构造器内却已经调用test,于是报错了。
改为:
private static Map<Integer,Boolean> test = new HashMap<Integer, Boolean>(); private static Example example = new Example();
就可以了。
阅读全文
0 0
- java.lang.ExceptionInInitializerError的原因
- java.lang.ExceptionInInitializerError的原因
- java.lang.ExceptionInInitializerError的原因
- java.lang.ExceptionInInitializerError的原因
- java.lang.ExceptionInInitializerError异常的的解决方法
- java.lang.ExceptionInInitializerError
- java.lang.ExceptionInInitializerError
- java.lang.ExceptionInInitializerError
- java.lang.ExceptionInInitializerError
- java.lang.ExceptionInInitializerError
- java.lang.ExceptionInInitializerError
- java.lang.ExceptionInInitializerError解决办法
- Java.lang.ExceptionInInitializerError 错误
- java.lang.ExceptionInInitializerError
- java.lang.ExceptionInInitializerError 错误
- java.lang.ExceptionInInitializerError
- java.lang.ExceptionInInitializerError(HIBERNATE问题)
- NoClassDefFoundError ClassNotFoundException java.lang.ExceptionInInitializerError
- 判断字母顺序的问题,如AB...Z AA AB... ZZ这种如何判断
- ubuntu云服务器搭建jdk+mysql+tomcat
- keras框架
- 进程间通讯(一)管道
- nginx 支持thinkphp设置
- java.lang.ExceptionInInitializerError的原因
- AspectCore.Extension.Reflection : .NET Core反射扩展库
- spring cloud+dotnet core搭建微服务架构:配置中心续(五)
- Android自定义控件drawText的baseline的问题
- 解析各类文件--cookbook读书笔记
- 开发笔记——前端优化
- 整理springdata mongodb 查询 一
- 习题1
- Android 报错解决办法:I/O error during system call, Connection reset by peer