java反射机制——解析(2)
来源:互联网 发布:java求二叉树的节点数 编辑:程序博客网 时间:2024/05/16 18:33
在上一篇已经介绍java反射机制定义和事例,这篇主要介绍怎么使用Class,Field,Method,Constructor对象的使用
1、Class类对象的使用
可以通过Constructor 类调用有参构造方法完成对象的实例化操作
public class DumpMethods {public static void main(String[] args) {try {// 定义一个Person实例对象Person man = new Person("测试", 30);//获取类对象Class manClass=man.getClass();Class param[]=new Class[2];param[0]=java.lang.String.class;param[1]=Integer.TYPE;//获取带两个参数的构造函数Constructor manCon=manClass.getConstructor(param);Object ob[]=new Object[2];ob[0]=new String("zjh");ob[1]=new Integer(100);//根据Class类对象调用对应的构造函数生成实例对象Person newMan=(Person)manCon.newInstance(ob);System.out.println("name= "+newMan.getName());System.out.println("age= "+newMan.getAge());} catch (Throwable e) {System.err.println(e);}}}
输出结果:
name= zjh
age= 100
2)Field对象使用
public class DumpMethods {public static void main(String[] args) {try {// 定义一个Person实例对象Person man = new Person("测试", 30);Class manClass=man.getClass();//下面这种获取属性对象,该属性必须是publicField nameField=manClass.getField("name");//下面这种对属性是否public活private没有要求Field ageField=manClass.getDeclaredField("age");
//这里面设置值只能是public,private的不能设置
nameField.set(man, "ceshi");System.out.println(man.getName());} catch (Throwable e) {System.err.println(e);}}}输出结果:
ceshi
3)method对象的使用
public class DumpMethods {public static void main(String[] args) {try {// 定义一个Person实例对象Person man = new Person("测试", 30);Class manClass=man.getClass();Class paramName[]=new Class[1];paramName[0]=java.lang.String.class;Method nameMethod=manClass.getMethod("setName", paramName);nameMethod.invoke(man, "zjh");System.out.println("man对象name==="+man.getName());} catch (Throwable e) {System.err.println(e);}}}输出结果:
man对象name===zjh
4)constructor对象的使用
public class DumpMethods {public static void main(String[] args) {try {// 定义一个Person实例对象Person man = new Person("测试", 30);//获取类对象Class manClass=man.getClass();Class param[]=new Class[2];param[0]=java.lang.String.class;param[1]=Integer.TYPE;//获取带两个参数的构造函数Constructor manCon=manClass.getConstructor(param);Object ob[]=new Object[2];ob[0]=new String("zjh");ob[1]=new Integer(100);//根据Class类对象调用对应的构造函数生成实例对象Person newMan=(Person)manCon.newInstance(ob);System.out.println("name= "+newMan.getName());System.out.println("age= "+newMan.getAge());} catch (Throwable e) {System.err.println(e);}}}
- java反射机制——解析(2)
- java反射机制——解析
- JAVA 反射机制解析
- java反射机制解析
- Java反射机制解析
- java反射机制解析
- java反射机制解析
- Java—反射机制
- JAVA基础 (二)反射 深入解析反射机制
- JAVA基础 (三)反射 深入解析反射机制
- Java反射机制(源码反射优势解析)
- Java反射机制(源码反射优势解析)
- java反射机制实例解析
- java反射机制实例解析
- JAVA反射机制案例解析
- Java反射机制——反射的介绍(一)
- JAVA——反射机制
- java——反射机制
- Linux进程状态
- 页面间跳转和传值
- 获取u盘挂载对应路径
- hdu 3488(uva 1349)(KM)
- 文章统计谈刷新
- java反射机制——解析(2)
- 【技术分享】开Oracle调优鹰眼,深入理解AWR性能报告
- URI和URL的区别
- Linux下c开发 之 线程通信(转)
- 利用模板编译期计算阶乘
- android Spyware Nuhaz.A
- gc buffer busy/gcs log flush sync与log file sync
- 有关递归
- 有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。