反射机制学习总结

反射机制学习总结


反射在底层的框架用到的比较多,每个公司的业务的框架的维护,都会用到反射来加载。

 

一、先来说一下Class类

1、 注意C是大写,它是一个类

(1):Class可以看成某一个对象照镜子之后看到的信息,它可以看到这个对象的成员变量,成员方法,构造方法,实现了哪些接口等信息。

(2):Class是一个类,是一个描述类的一个类

(3): 一个类在 JVM 中只会有一个Class实例

(4):这个Class实例只能由系统建立

 

2、 一个类为什么要反射然后产生一个对应的Class类呢。

有时候需要获取某个类的属性或者方法,但这个类并没有被实例化,只有类的全类名,此时可以利用反射机制来完成获取功能

获取Class的3中方式:

(1):直接通过类名.class 的方式获取,该方法最为安全可靠,程序性能更高

 Class class1 =Person.class;

(2): 通过对象调用.getClass()来获取(此时需要实例化的对象。用的少)

  比如传过来一个Object类,不知道具体是什么类,然后,object.getClass()

(3): 通过全类名的方式获取

  Class.forName(“全类名”);  它会默认调用类的无参数的构造器

  通过全类名得到类的对象,,然后用newInstance()方法创建类的实例

 

 

 

注意:在定义一个类的时候,有参数的构造器是为了传递参数、实例化对象,而无参构造器则基本是为了让反射机制调用,所以一般定义对象时,声明了有参构造器时,一定要声明一个无参构造器。

 

 

3、Class类常用的方法

 

方法名

功能说明

static Class forName(String name)

返回指定类名 name 的 Class 对象

Object newInstance()

调用缺省构造函数,返回该Class对象的一个实例

Object newInstance(Object []args)

调用当前格式构造函数,返回该Class对象的一个实例

getName()

返回此Class对象所表示的实体(类、接口、数组类、

基本类型或void)名称

Class getSuperClass()

返回当前Class对象的父类的Class对象

Class [] getInterfaces()

获取当前Class对象的接口

ClassLoader getClassLoader()

返回该类的类加载器

Class getSuperclass()

返回表示此Class所表示的实体的超类的Class

 

 

 

二、接下来我们来介绍反射

 1、 Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的內部信息,并能直接操作任意对象的内部属性及方法。

Java反射机制主要提供了以下功能:

Ø  在运行时构造任意一个类的对象

Ø  在运行时获取任意一个类所具有的成员变量和方法

Ø  在运行时调用任意一个对象的方法(属性)

Ø  生成动态代理

 

2介绍Method、它对应类中的方法

2.1 如何获取Method

 1)、getDeclaredMethods:得到Method数组

 2)、getDeclaredMethod(StringmethodName, Class…  paramsTypes)

   2.2如何调用Method

1)、当方法为Private时,需要先调用setAccessible(true)使其变为可访问

2)、method.invoke(obj,Object…  args);执行方法

 

3、 关于Field:

3.1、如何获取Field,getField(String fieldName)

3.2、如何获取Field的值

     setAccessible(true);

     field.get(object  obj)

3.3、如何设置Field的值

     Field.set(Objectobj, object val)

4、 了解Constructor和Annotation(略)

5、 反射和泛型(略)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值