目录
在javabean中要求提供一个public的空参构造器。原因:
newInstance()方法
调用此方法,创建对应的运行时类的对象。内部调用了运行时类的空参的构造器。
要想此方法正常的创建运行时类的对象,要求:
1.运行时类必须提供空参的构造器
2.空参的构造器的访问权限得够。通常,设置为public。
在javabean中要求提供一个public的空参构造器。原因:
1.便于通过反射,创建运行时类的对象
2.便于子类继承此运行时类时,默认调用super()时,保证父类有此构造器
反射创建对象的测试1
public void test1() throws IllegalAccessException, InstantiationException {
Class<Person> clazz = Person.class;//泛型
Person obj = clazz.newInstance();
System.out.println(obj);
}
由于调用的空参构造器为
public Person() {
System.out.println("Person()");
}
同时还有toString()方法
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
所以最后的输出结果为
Person()
Person{name=’null’, age=0}
体现反射动态性的测试2
public void test2(){
for(int i = 0;i < 1;i++){
int num = new Random().nextInt(3);//0,1,2
String classPath = "";
switch(num){
case 0:
classPath = "java.util.Date";//sql下的Date没有空参构造器
break;
case 1:
classPath = "java.lang.Object";
break;
case 2:
classPath = "com.atguigu.java.Person";
break;
}
try {
Object obj = getInstance(classPath);
System.out.println(obj);
System.out.println(classPath);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
创建一个指定类的对象。
classPath:指定类的全类名
*/
public Object getInstance(String classPath) throws Exception {
Class clazz = Class.forName(classPath);
return clazz.newInstance();
}
程序运行呈现动态性
当输出的num为2时,输出的结果为
Person()
Person{name=’null’, age=0}
com.atguigu.java.Person
当输出的num为1时,输出的结果为
java.lang.Object@504bae78
java.lang.Object
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/83282.html