前言:
今天小伙伴们对“java实例化对象时报错”大致比较注意,各位老铁们都想要学习一些“java实例化对象时报错”的相关知识。那么小编也在网上汇集了一些关于“java实例化对象时报错””的相关知识,希望姐妹们能喜欢,小伙伴们快快来了解一下吧!想利用反射技术实例化对象,但是发现总是跑出如下图的异常:
幸好前人已经帮我解释了这到底是什么原因
该解释来自:
意识是:由于在实体类中未添加无参构造函数引起的。
这样问题就很明了了,果不其然,我在相应类中添加了无参构造器,真的没有报错了,下面把代码复制下来,可以直接使用,但是要把相应的包名改成自己的包名就可以运行了!
源代码:
1、对象类
package com.xt.model;
public class Person {
private String name;
private String age;
private String address;
//这是无参构造器,实例化对象时必须用到,
//就应为忘了写这个,才会出现之前的报错!!
public Person() {
}
public Person(String name, String age, String address) {
super();
this.name = name;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
2、测试类
package com.x.test;
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) {
try {
Class<?> cl = Class.forName("com.hs.model.Person");
System.out.println(cl.newInstance());
System.out.println("getName"+cl.getName());
Field[] fiels = cl.getDeclaredFields();
for(Field f:fiels){
System.out.println(f.getName());
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
运行结果:
总结:其实这个也不难理解,一般地我们实例化对象时,必须要用到该对象的构造器,否则不能实例化。这里出错的原因是我们往往会容易忘记这个报错是什么意思,从而不知道如何解决,为了保险起见,对于刚入坑的伙伴们每次创建对象时,最好把无参构造器和有参构造区都写上。
标签: #java实例化对象时报错