博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java反射机制:获取成员变量和构造函数的信息
阅读量:4086 次
发布时间:2019-05-25

本文共 1992 字,大约阅读时间需要 6 分钟。

*成员变量

成员变量也是对象
Field类封装了关于成员变量的操作
getFields()获取所有public成员变量的信息
getDeclaredFields()获取所有自己声明的变量

1.ClassUtil中声明方法:

/**	 * 获取类的成员变量	 * 成员变量也是对象	 * Field类封装了关于成员变量的操作	 * getFields()获取所有public成员变量的信息	 * getDeclaredFields()获取所有自己声明的变量	 * @param obj 要获取类的实例对象	 * @return 成员变量	 */	public static Field[] getFields(Object obj)	{		Class c=obj.getClass();		Field[] fields=c.getDeclaredFields();				return fields;			}

2.实现

public static void main(String[] args) {				Integer b=3;		Field[] fields = ClassUtil.getFields(b);		for(Field field:fields)		{			//得到成员变量的类的类类型			Class fieldType=field.getType();			//得到成员变量的名称			String fieldName=field.getName();			//得到成员变量的类型的名称			String fieldTypeName=fieldType.getName();			System.out.println(fieldTypeName+" "+fieldName);		}	}
运行结果:

int MIN_VALUEint MAX_VALUEjava.lang.Class TYPE[C digits[C DigitTens[C DigitOnes[I sizeTableint valueint SIZEint BYTESlong serialVersionUID

——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

*构造方法也是对象

  Constructor类封装了关于成员变量的操作
  getConstructors()获取所有public成员变量的信息
  getDeclaredConstructors()获取该类所有的构造方法

1.在ClassUtil中声明方法

/**	 * 获取类的构造方法	 * 构造方法也是对象	 * Constructor类封装了关于成员变量的操作	 * getConstructors()获取所有public成员变量的信息	 * getDeclaredConstructors()获取该类所有的构造方法	 * @param obj	 * @return	 */	public static Constructor[] getCons(Object obj)	{		Class c=obj.getClass();		Constructor[] cons=c.getDeclaredConstructors();		return cons;			}

2.实现

public static void main(String[] args) {				Integer a=5;		Constructor[] cons=ClassUtil.getCons(a);				for(Constructor constructor:cons)		{			System.out.print(constructor.getName()+"(");			//获取构造函数的参数列表			Class[] paramTypes=constructor.getParameterTypes();			for (Class class1 : paramTypes) {				System.out.print(class1.getName()+",");			}			System.out.println(")");		}	}
结果:
java.lang.Integer(int,)java.lang.Integer(java.lang.String,)

转载地址:http://lskii.baihongyu.com/

你可能感兴趣的文章
浅谈JavaScript--声明提升
查看>>
React非嵌套组件通信
查看>>
Websocket 使用指南
查看>>
浏览器兼容性问题解决方案 · 总结
查看>>
一个很棒的Flutter学习资源列表
查看>>
为什么你应该放弃React老的Context API用新的Context API
查看>>
Flutter 布局控件完结篇
查看>>
Koa2初体验
查看>>
Koa 2 初体验(二)
查看>>
Koa2框架原理解析和实现
查看>>
vue源码系列文章good
查看>>
你不知道的Virtual DOM
查看>>
VUE面试题总结
查看>>
写好JavaScript条件语句的5条守则
查看>>
原生JS中DOM节点相关API合集
查看>>
【TINY4412】U-BOOT移植笔记:(7)SDRAM驱动
查看>>
【TINY4412】U-BOOT移植笔记:(12)BEEP驱动
查看>>
单链表的修改和删除
查看>>
C++的三个基本特征:封装、继承、多态
查看>>
C++虚函数的总结
查看>>