对象实例化错误

1 问题

在项目开发过程中如果你的项目中出现如下情况:则说明遇到对象实例化报错的问题。

5618905d782a62fe081ea14c88029505.jpeg

2 方法

  1. .先分析报错原因,报错时,一定要看主要问题,对于遇到java.lang.InstantiationException实例化异常一般遇到这类问题,有两种情况。

  2. .第一种,要实例化的对象是一个接口或者是抽象类等无法被实例化的类。

解决方法就是在使用反射的机制时,由于抽象父类中的构造方法不是public的,所以导致异常的出现,其实很简单,只要将需要反射的类中的相应构造方法改为public即可。

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

解决方法就是建议在创建类的时候,建议保留(显式的写出来)无参构造。

4954601c0d5872632ee61bbeecd420f3.jpeg

3 结语

   总结原因:遇到第一种情况只需将需要反射的类中的相应构造方法改为public就行了。而遇到第二种则要通过反射来为某个类创建实例的时候,需要该类存在无参构造,不然就会抛出InstantiationException该异常。所以最好还是把无参构造保留的好!(ps:如果无参构造的修饰符被修改为其他的protected private default,将会出现另一个异常java.lang.IllegalAccessException)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法与编程之美

欢迎关注『算法与编程之美』

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值