尚学堂百战程序员:Java反射机制、动态代理
什么是反射机制?
在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为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行业的聚集地。"
查看原文 >>