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)
相关阅读
最近在学习OSGi,想着顺便把java系统地学一下吧。 哪知道环境配置好,第一次code,就报错了。。。在这里记录一下解决方法吧,目前在网上
jib Official:GoogleContainerTools/jib 本文示例完整demo github地址 https://github.com/moxingwang/jib 想要了解并
JAVA招聘中公司要求技能 引言 我从事软件开发已经有五个年头,做过C语言开发、C#开发、VB.NET开发、JAVA开发。由于本人即将离职,在
数据结构: 线性表: 最常用的、最简单的数据结构,它是n个数据元素的有限序列、 实现线性表:输出存储线性表元素,即是用一组连续的存储单
迪米特法则 【Low Of Demeter】 定义:一个对象应该对其他对象保持最少的了解。 问题由来:类与类之间的关系越密切,耦合度越大