java 反射加载类的对象
2016-06-04 23:04
351 查看
创建java project,建包package cn.itcast.reflect,在包里创建Person类:
在包package cn.itcast.reflect中建Demo测试类
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); } }
相关文章推荐
- 虚拟机类加载机制
- java 实现以字符为单位读取文件(3)
- java之内存管理
- java 实现以字节为单位读取文件(2)
- java 实现以行为单位读取txt文件(1)
- spring mvc返回类型
- java之泛型潜在错误
- java 创建文件和文件夹
- SpringMVC——接收请求参数和页面传参
- Java设计模式
- java FileOutputStream写入文件
- SpringMVC之matrixVariable
- JAVA并发编程
- java web工程怎样改名
- 详解spring中每个jar包的作用
- java 实现n个整数的全排列
- java反射机制
- (45). Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】
- Struts2-学习笔记系列(15)-ajax支持和JSON
- Struts2-学习笔记系列(14)-拦截器