Java反射reflect学习笔记_2:反射类的构造函数
2015-11-13 20:35
459 查看
//===================================================
// 反射类的构造函数
//===================================================
<!--
| 首先,通过Class获取类的字节码
| Class clazz = Class.forName("com.marer.reflect.Person");
|
| 然后,利用Constructor创建对象
| Constructor c = clazz.getConstructor(null);//获取无参的构造函数
| Constructor c = clazz.getConstructor(String.class);//获取参数为String的构造函数
| Constructor c = clazz.getConstructor(String.class, int.class);//获取参数为String,int的构造函数
| Constructor c = clazz.getDeclaredConstructor(List.class);//获取隐藏为private的构造函数
| c.setAccessible(true);//暴力反射
|
| 创建对象的另外一种途径,反射出类的无参构造函数并创建对象
| Class clazz = Class.forName("com.marer.reflect.Person");
| Person p = (Person) clazz.newInstance();
| 但是当无参的构造函数为private或不存在的时候,反射抛异常
|转载请注明出处:/article/11906587.html
| 但是可以通过暴力反射获取类的隐藏构造函数:
| Constructor.setAccessible(true);
-->
// 反射类的构造函数
//===================================================
<!--
| 首先,通过Class获取类的字节码
| Class clazz = Class.forName("com.marer.reflect.Person");
|
| 然后,利用Constructor创建对象
| Constructor c = clazz.getConstructor(null);//获取无参的构造函数
| Constructor c = clazz.getConstructor(String.class);//获取参数为String的构造函数
| Constructor c = clazz.getConstructor(String.class, int.class);//获取参数为String,int的构造函数
| Constructor c = clazz.getDeclaredConstructor(List.class);//获取隐藏为private的构造函数
| c.setAccessible(true);//暴力反射
|
| 创建对象的另外一种途径,反射出类的无参构造函数并创建对象
| Class clazz = Class.forName("com.marer.reflect.Person");
| Person p = (Person) clazz.newInstance();
| 但是当无参的构造函数为private或不存在的时候,反射抛异常
|转载请注明出处:/article/11906587.html
| 但是可以通过暴力反射获取类的隐藏构造函数:
| Constructor.setAccessible(true);
-->
//解剖类的构造函数,创建类的对象 public class Demo2 { //反射构造函数:public Person() @Test public void test1() throws Exception{ Class clazz = Class.forName("com.marer.reflect.Person"); Constructor c = clazz.getConstructor(null); Person person = (Person)c.newInstance(null); System.out.println(person.str); } //反射构造函数:public Person(String name) @Test public void test2() throws Exception{ Class clazz = Class.forName("com.marer.reflect.Person"); Constructor c = clazz.getConstructor(String.class); Person person = (Person)c.newInstance("测试成功"); System.out.println(person.str); } //反射构造函数:public Person(String name, int age) @Test public void test3() throws Exception{ Class clazz = Class.forName("com.marer.reflect.Person"); Constructor c = clazz.getConstructor(String.class, int.class); Person person = (Person)c.newInstance("测试成功",123); System.out.println(person.str); } //反射四有的构造函数:private Person(List list) @Test public void test4() throws Exception{ Class clazz = Class.forName("com.marer.reflect.Person"); Constructor c = clazz.getDeclaredConstructor(List.class); c.setAccessible(true);//暴力反射 Person p = (Person) c.newInstance(new ArrayList()); System.out.println(p.str); } //创建对象的另外一种途径,反射出类的无参构造函数并创建对象 //但是当无参的构造函数为private或不存在的时候,反射抛异常 @Test public void test5() throws Exception{ Class clazz = Class.forName("com.marer.reflect.Person"); Person p = (Person) clazz.newInstance(); System.out.println(p); System.out.println(p.str); } }
相关文章推荐
- Java反射reflect学习笔记_1:反射的简述
- eclipse 文本编辑器
- 编写无Java脚本的JSP页面
- java swing 设置文件保存路径
- Java正则表达式教程
- 将java源码打成jar包
- Java Web项目中出现的中文乱码问题
- JAVA学习10_@Override、@Deprecated和@SuppressWarnings注释说明
- 求二叉树的深度 java描述
- 反射学习笔记
- java中的流介绍
- 35个Java代码性能优化总结
- Struts2系统学习(8)自定义类型转换器
- Eclipse下Gradle使用不同资源打包多版本应用
- 南邮JAVA实验3---流处理程序设计
- JAVA关于SET,GET的方法应用和一些问题
- String.CopyTo方法和java多线程的一些问题整理
- MyEclipse不能部署工程
- ssh项目中的,由于spring的注入问题引起的空指针错误
- Java多线程实现二维数组相乘