您的位置:首页 > 编程语言 > Java开发

java 反射加载类的对象

2016-06-04 23:04 351 查看
创建java project,建包package cn.itcast.reflect,在包里创建Person类:

package cn.itcast.reflect;

public class Person {
public Person(){//无参构造函数
System.out.println("Hello");
}

public Person(String name){//public 有参构造函数
System.out.println("Hello"+name);
}

private Person(int k){//private 有参构造函数
System.out.println("Hello"+k);
}

}


在包package cn.itcast.reflect中建Demo测试类

package cn.itcast.reflect;

import java.lang.reflect.Constructor;

public class Demo {
/*加载类字节码,通过反射创建类的对象*/
public static void main(String args[]) throws Exception{
/*通过无参构造函数加载Person类
* 1.得到cn.itcast.reflect.Person对应的class对象
* Class clazz=Class.forName("cn.itcast.reflect.Person");
* 2.得到clazz类的所有构造方法,此处clazz代表Person类
Constructor con=clazz.getConstructor();
* 3. 根据构造函数new一个实例对象
Person per=(Person) con.newInstance();
*/

/*
* 通过有参构造函数加载Person类
* Class clazz=Class.forName("cn.itcast.reflect.Person");
Constructor con=clazz.getConstructor(String.class);  //构造函数参数为String类型
Person per=(Person) con.newInstance("sun");
*/

Class clazz=Class.forName("cn.itcast.reflect.Person");
Constructor con=clazz.getDeclaredConstructor(int.class);//构造函数参数为int类型
con.setAccessible(true);//强制要求可访问私有构造函数
Person per=(Person) con.newInstance(666);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: