java 对象实例化 报错_Java对象实例化报错:java.lang.InstantiationException: com.bjbde.pay.model.BdModel.BdMemberApiC...

现象

开发中使用实体类创建对象时,报错:

java.lang.InstantiationException: com.bjbde.pay.model.BdModel.BdMemberApiConfig

实例化对象的代码

public static T map2Bean(Map source, Class instance) {

try {

T object = instance.newInstance();

Field[] fields = object.getClass().getDeclaredFields();

for (Field field : fields) {

field.setAccessible(true);

FieldName fieldName = field.getAnnotation(FieldName.class);

if (fieldName != null){

field.set(object,source.get(fieldName.value()));

}else {

field.set(object,source.get(field.getName()));

}

}

return object;

} catch (InstantiationException | IllegalAccessException e) {

e.printStackTrace();

}

return null;

}

instance.newInstance();在此处抛出错误,其使用的实体类中没有构造方法。

分析与解决

查找资料发现,在相应实体类中加入无参构造方法可避免该异常发生。

进一步查找资料,发现

Think In Java 第十四章类型信息(318页)中有对该部分使用的说明:

使用newInstance()来创建类,必须带有默认的构造器。

在练习1中还给出了一个这样的例子。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值