java reflect

一、反射的本质

java中每个.class文件都会在堆中创建一个Class对象,反射就是使用Class对象控制.class的类字节码。

 

二、获取Class对象的方法

1、Class clazz = 类名.class

2、Class clazz = Class.forName(“类的完整路径”)

3、实例对象的引用.getClass();//ps:这个方法是继承自object类中的

 

三、反射之创建对象

<!--[if !supportLists]-->1. <!--[endif]-->使用Class对象的newInstance方法,这个方法相当于调用空构造函数

 

 

四、反射之field

1. Class类的getDeclaredFields方法可以获得本类中的所有实例比变量。本方法返货的是一个field对象 或者该对象的数组。

<!--[if !supportLists]-->2. <!--[endif]-->可以使用fieldset方法修改相关属性的值,但是对于private的属性要先关闭语法检查,使用field方法的setAccessible(true)。还有一点,set方法如果作用在静态变量上可以不用传递实例变量。

<!--[if !supportLists]-->3. <!--[endif]-->使用fieldgetField方法可以获得该类的所用public方法(注意这里面包含所有的父类public方法)

 

<!--[if !supportLists]-->五、<!--[endif]-->反射之方法

getDeclaredMethods可以获得所有的类的方法

getDeclaredMethodstring Class[])可以获得相应参数列表的方法,但是不能获得父类的方法,如果是private方法,要进行调用就要关闭语法检测,使用Method类的setAccessible方法。调用方法使用invoke方法

getMethod可以获得所有的公共方法,包括父类的

<!--[if !supportLists]-->六、<!--[endif]-->反射之构造方法

Class类的getConstructorCLass[])可以获得类的构造函数

使用Constructor类的newInstance方法可以创建一个对象

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值