反射

一、 反射(modifiers(修饰符),fields(属性),methods(方法))

1、 概念:在程序运行时动态解析类的内部信息(注解【@override】、属性、方法)

2、 获取类信息的三种方法

(1)     
Class:将类的信息封装成类(class中的类型是固定的)

Class         class                     对象

Field(属性)         private Xxx valName=                       “name”

访问修饰符:private/default/protected/public

数据类型:boolean/char/…/Xxx

属性名称:valName

Method(类)        public Xxx methodName(…){….}

访问修饰符:private/default/protected/public

返回类型:boolean/char/…/Xxx

方法名称:methodName

参数列表:Parameter

Constructor(构造方法)             public className(…){…}

访问修饰符:

参数列表:Parameter

(2)     
三种方法

①   
Class c = ToolKit.class;   //通过已知类型获取类型信息

②   
ToolKit tl = new ToolKit;

Class c = tl.getClass();           //通过对象获取类型信息

③   
Class c = Class.forName(String
classFullPath);//包的全包路径,获取类信息

3、 获取类名

(1)     
String fullPathName =
c.getName();     //获取类全包路径

(2)     
String simpleName =
c.getSimpleName();          //获取类的简名

4、 反射创建对象

(1)     
通过无参构造创建对象:T t =
(T)c.newInstance();

(2)     
获取当前类中的构造方法

Constructor cons
= c.getConstructor(Class<?>…paranterTypes);

T t =
(T)cons.newInstance(Object…paramenters);

5、 获取当前类中的自定义属性

(1)     
Filed[] fs =
c.getDeclaredFields();

(2)     
Filed f = ….

int modifiedNum = f.getModifies();    //获取属性访问修饰整数

0default;1:public;2:private;4:protected

Class c = f.getType();           //获取属性的类型信息

String typeName = c.getName();       //获取属性的类型名称

String fieldNmae = f.getName();        //获取属性的名称

f.setAccessible(boolean visible);         //设置属性的可见性

f.set(T t,Xxx value);       //给t对象的f属性赋值

E value = f.get(T t);       //获取t对象f属性的值

6、 获取当前类中的自定义方法

(1)     
Method[] ms =
c.getDeclaredMethods();

(2)     
Method m = ….

String methodName = m.getName();       //获取方法名称

Class c = m.getReturnType();      //获取方法返回类型

String returnType = c.getName();      //获取方法返回类型名称

Classs[] parameterTypes = c.getParameterTpye();

//获取方法所有参数类型

m.setAccessible(boolean visible);       //设置方法的可见性

E val =(E)m.invoke(T target,Object…params);   //调用方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值