1.创建接口,定义方法
public interface UserDao {
public int add(int a,int b);
}
2.创建接口的实现类,实现方法
public class userdaoimpl implements UserDao{
@Override
public int add(int a, int b) {
return a+b;
}
}
3.使用Proxy类创建接口代理对象
public class jdkproxy {
public static void main(String[] args) {
Class[] interfaces ={UserDao.class};//接口
userdaoimpl userdao=new userdaoimpl();
UserDao o = (UserDao) Proxy.newProxyInstance(jdkproxy.class.getClassLoader(), interfaces, new UserDaoProxy(userdao));//返回代理对象。newProxyInstance的三个参数分别是,类加载器、要实现的接口、InvocationHandler接口(创建对象实现该接口)
int result=o.add(1,2);//测试方法
System.out.println(result);
}
}
//创建代理对象
class UserDaoProxy implements InvocationHandler{
private Object obj;
//传递要代理对象的对象
public UserDaoProxy(Object obj) {
this.obj=obj;
}
//增强逻辑
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(method.getName()+ Arrays.toString(args));//方法执行前,显示方法名和传递的参数
Object res=method.invoke(obj,args);//增强方法执行
System.out.println(obj);//方法执行后,显示
return res;
}
}