Proxy是一个类,而起你可以看做是一个工具类,专门为创建动态代理而存在的。所属包:java.lang.reflect
最主要方法有两个:
解说:
① Proxy.getProxyClass(<1>参数是指定的类加载器对象 , <2>参数是目标类也就是需要创建代理类的对象所实现的接口列表);
//这个方法是为一个类创建动态代理类的Class实例对象,得到代理类的Class实例对象,那么学过反射肯定知道怎么创建实体对象了,但是,这只是创建了一个代理类,
//没有任何作用,因为没有绑定目标对象,绑定目标对象,有invocationHandler的代理类才是起作用的代理类。这个方法不常用,下面一个方法更重要
② Proxy.newProxyInstance(<1>参数指定的类加载器对象-->一般是从目标类的接口上获取 , <2>参数是目标类所实现的接口的Class对象列表 ,<3> 绑定目标处理程序--->InvocationHandler--这才是重点-InvacationHandler中通过反射获取目标类的方法并调用--而且可以在调用前后加系统功能代码--这才是真正的代理类形成了 );
//这个方法直接返回一个已经可以起作用的代理类对象,而增加的处理代码,则是在第三个参数InvocationHandler中。可以说代理的重点是InvocationHandler目标处理程序,
//而Proxy的方法,只是一个形式,你记住查API用法就可以了。理解了InvocationHandler代理也就明白了
//具体原方法可以查 java.lang.reflect.Proxy类,我上面只是对这类生成代理类的方法及其参数进行了解释,打开API一对照就明白了。代理的重点在InvocationHandler。
|