必威体育Betway必威体育官网
当前位置:首页 > IT技术

关于导致java.lang.InstantiationException异常的原因分析

时间:2019-10-07 21:15:34来源:IT技术作者:seo实验室小编阅读:88次「手机版」
 

instantiationexception

这个异常多半是由于通过反射在实例化的时候,对应的类里面覆盖了无参构造而导致无法实例化,由于创建类的时候,默认有一个无参构造,前提是没有其他构造方法,如果没有明确的将无参构造写出来,该类就是缺少无参构造了,也就导致了无法实例化

遇到的实际问题如下:

所以建议在创建类的时候,最好还是保留(显式的写出来)无参构造

先保留无参构造,则可以在通过反射实例化的时候,不会抛出异常

请忽略其他参数,(在写一个工具类,从数据库查找数据,根据类进行封装)

输出结果:

去掉无参构造(该类还有其他有参构造)

输出结果就是这样了:

java.lang.instantiationexception: self.bean.Pad

   at java.lang.Class.newinstance(Class.java:427)

   at self.util.Util.getObject(Util.java:58)

   at self.util.Test.main(Test.java:15)

Caused by: java.lang.NoSuchMethodException: self.bean.Pad.<init>()

   at java.lang.Class.getConstructor0(Class.java:3082)

   at java.lang.Class.newInstance(Class.java:412)

   ... 2 more

总结原因:

通过反射来为某个类创建实例的时候,需要该类存在无参构造,不然就会抛出InstantiationException该异常

所以最好还是把无参构造保留的好!(ps:如果无参构造的修饰符被修改为其他的protected private default,将会出现另一个异常java.lang.IllegalAccessException)

相关阅读

java 错误:找不到或无法加载主类(jdk1.8)

最近在学习OSGi,想着顺便把java系统地学一下吧。 哪知道环境配置好,第一次code,就报错了。。。在这里记录一下解决方法吧,目前在网上

Jib构建你的第一个java镜像

jib Official:GoogleContainerTools/jib 本文示例完整demo github地址 https://github.com/moxingwang/jib 想要了解并

JAVA招聘中公司要求技能

JAVA招聘中公司要求技能 引言 我从事软件开发已经有五个年头,做过C语言开发、C#开发、VB.NET开发、JAVA开发。由于本人即将离职,在

Java基本数据结构

数据结构: 线性表: 最常用的、最简单的数据结构,它是n个数据元素的有限序列、 实现线性表:输出存储线性表元素,即是用一组连续的存储单

Java设计模式-迪米特法则

迪米特法则 【Low Of Demeter】   定义:一个对象应该对其他对象保持最少的了解。  问题由来:类与类之间的关系越密切,耦合度越大

分享到:

栏目导航

推荐阅读

热门阅读