Java反射(四)----- 获取成员变量和构造函数信息
来源:互联网 发布:青年网络公开课第二期 编辑:程序博客网 时间:2024/06/07 18:43
上一篇中,我们主要利用反射来获取成员方法,这一篇,继续完善上一篇中封装的类,用来获取成员变量和构造函数,代码如下:
ClassUtil.java文件代码
import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;public class ClassUtil { /** * * @param obj 该对象所属类的信息 */ /** * 打印类的信息,包括类的成员函数、成员变量 * @param obj 对象 * @param flag true ---- 只打印该类自己声明的的成员变量,成员方法 false ----- 打印所有的public类型的成员变量,成员方法 */ public static void printClassMessage(Object obj, boolean flag){ //要获取类的信息,首先要获取类的类类型 Class c = obj.getClass(); //传递的是哪个子类的对象,c就是该子类的类类型 //获取类的名称 System.out.println("类的名称是:" + c.getName()); printFieldMessage(obj, flag); printConstructMessage(obj, flag); printMethodMessage(obj, flag); } /** * 打印成员变量信息 * @param obj 对象 * @param flag true---打印该类自己声明的所有成员变量 false ----- 打印所有的public类型的成员变量,包括继承自父类的 */ public static void printFieldMessage(Object obj, boolean flag) { Field[] fs; Class c = obj.getClass(); /** *成员变量也是对象 *java.lang.reflect.Field *Field类封装了关于成员变量的操作 *getFields()方法获取的是所有的public的成员变量的信息 *getDeclareFields()方法获取的是该类自己声明的所有成员变量的信息 * */ System.out.println("-------成员变量的信息-----------"); if(flag){ fs = c.getDeclaredFields(); }else{ fs = c.getFields(); } for (Field field : fs) { //得到成员变量的类型的类类型 Class fieldType = field.getType(); String typeName = fieldType.getName(); //得到成员变量的的名称 String fieldName = field.getName(); System.out.println(typeName + " " + fieldName); } } /** * 打印对象的构造函数的信息 * @param obj * @param flag true---打印该类自己声明的所有苟傲函数 false ----- 打印所有的public类型的构造函数,包括继承自父类的 */ public static void printConstructMessage(Object obj, boolean flag){ Class c = obj.getClass(); Constructor[] cs; /** * 构造函数也是对象 * java.lang.Constructor封装了构造函数的信息 * */ System.out.println("-------构造函数的信息-----------"); if(flag){ cs = c.getDeclaredConstructors(); }else{ cs = c.getConstructors(); } for (Constructor constructor : cs) { System.out.print(constructor.getName() + "("); //获取构造函数的参数列表------>得到的是参数列表的类类型 Class[] paramType = constructor.getParameterTypes(); for (Class class1 : paramType) { System.out.print(class1.getName() + ","); } System.out.println(")"); } } /** * 打印成员方法信息 * @param obj 对象 * @param flag true---打印该类自己声明的所有成员方法 false ----- 打印所有的public类型的成员方法,包括继承自父类的 */ public static void printMethodMessage(Object obj, boolean flag) { Method[] ms; Class c = obj.getClass(); /** * Method类,方法对象 * 一个成员方法就是一个Method对象 * getMethods()方法获取的是所有的public的函数,包包括父类继承而来的 * getDeclareMethod() 方法获取的是该类自己声明的方法,不问访问权限,不包括从父类继承而来的 * */ System.out.println("-------成员方法的信息-----------"); if(flag){ ms = c.getDeclaredMethods(); }else{ ms = c.getMethods(); } for (int i = 0; i < ms.length; i++) { //得到方法的返回值类型的类类型(例如:返回值为int,得到的就是int.class) Class returnType = ms[i].getReturnType(); System.out.print(returnType.getName() + " "); //得到方法的名称 System.out.print(ms[i].getName() + "("); //获取参数类型---->获取的是参数列表的类型的类类型 Class[] paramTypes = ms[i].getParameterTypes(); for (Class class1 : paramTypes) { System.out.print(class1.getName() + ","); } System.out.println(")"); } }}
代码对上一篇中代码进行重构,重新封装,同时加入flag可以选择性获取类的信息。
0 0
- Java反射(四)----- 获取成员变量和构造函数信息
- JAVA反射获取成员变量构造函数信息
- 22、Java入门—反射之获取获取成员变量和构造函数的信息
- Java反射机制:获取成员变量和构造函数的信息
- java反射:获取类的成员变量和构造函数
- Java--Reflect(反射)专题4——获取成员变量以及构造函数信息
- java反射学习笔记(3)---使用Class来获取方法、成员变量、构造函数信息
- Java学习提要——"反射"获取方法信息(成员函数、成员变量 、构造函数)
- 【慕课网笔记】Java 反射机制 4 获取成员变量构造函数信息
- java反射,获取类的方法,成员变量,构造函数信息
- Java反射---Class对象,获得类的方法、成员变量和构造函数信息
- 4-1 Java获取成员变量与构造函数信息
- java反射2-获取构造方法、成员变量、成员方法
- Java 获取成员变量&构造函数
- 通过反射获取类对象的成员函数、成员变量(只获取成员函数)、构造函数
- Java 反射:Class类,动态加载类获取方法和成员变量构造信息,方法反射的基本操作,集合泛型的本质
- 使用java反射操作类的构造函数,成员变量和成员方法
- Java反射打印类的信息,包括类的成员函数、成员变量(只获取成员函数)
- redhat 6.6安装apache 2.4.20
- PHP内存溢出解决方案
- 关于强制更新我做的工作(不能通过APPStore审核的工作)后期会写能躲避审核的工作
- 文章标题
- 贩妖记 > 第二十章,不容侵犯
- Java反射(四)----- 获取成员变量和构造函数信息
- [zz]澄清P问题、NP问题、NPC问题的概念
- 2016腾讯实习生在线笔试题:把单词反转
- Python之datetime总结
- curl_init()函数用法
- 去掉shiro登录时url里的JSESSIONID
- Memcached 小探
- 深入理解 KVC\KVO 实现机制 — KVO
- Install and Configure Skype For Business 2015 Edge Server