什么是反射机制?

在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。简单来说,就是Java对每一个类和类中的所有成员都进行了封装,这样每个类都有一个与之对应的Class对象,通过这个对象可以直接访问类中的所有成员。

反射创建对象

·通过默认构造函数创建对象:Class> t = Class.forName("cn.test.reflect.A");

t.newInstance();

·通过指定构造函数创建对象:Class> t = Class.forName("cn.test.reflect.A");

Constructor> cons[] = t.getConstructors();

A a = (A) cons[2].newInstance("aa","bb");

注:

① Class>表示任何类型的类;

② newInstance()方法只能调用public的无参构造函数,它和new关键字创建实例的区别:

创建对象的方式不一样,newInstance是使用类加载机制,new是创建一个新类;

动态代理

代理模式为其它对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

动态代理是指客户通过代理类来调用其它对象的方法,主要使用了Java反射机制来实现动态代理。使用Java的反射机制创建动态代理对象,让代理对象在调用目标方法之前和之后分别做一些事情,然后动态代理对象决定是否调用以及何时来调用被代理对象的方法。

“我们相信人人都可以成为一个IT大神,现在开始,选择一条阳光大道,助你入门,学习的路上不再迷茫。这里是北京尚学堂,初学者转行到IT行业的聚集地。"

查看原文 >>
相关文章