主要就一句:
Proxy.newProxyInstance(a,b,c)
a参数是自己的类,b参数是要实现加强类的接口,c参数是自己写的加强类,要自己写,继承
InvocationHandler接口
这句执行完即可获得加强类
package com.dao;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class Test {
public static void main(String[] args) throws ClassNotFoundException {
Class [] issues={User.class};
Userimpl user=new Userimpl();
User user2= (User)Proxy.newProxyInstance(Test.class.getClassLoader(), issues,new Userprocexy(user));
System.out.println(user2.add(10,10));
}
}
class Userprocexy implements InvocationHandler //继承invocation接口
{ public Object obj;
public Userprocexy(Object obj)//应该是传想添加功能的方法的实现类,为了通用,直接接收object类型,这样任何一个类都可以使用这个加强类
{
this.obj=obj;//需要先使用构造方法,获得想添加功能的方法的实现类,以能够执行该类的方法
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("在添加前执行"+method.getName());
Object res= method.invoke(obj,args);//obj是想添加功能的方法的实现类,args是调用时的参数
System.out.println("在添加后执行"+obj);
return res;
}
}



