目录

写一个类
package Proxy;
public class Son implements IWork{
public void work(){
System.out.println("儿子你在工作");
}
}
写一个接口,让Son类实现接口
package Proxy;
public interface IWork {
public void work();
}
写一个代理类,代理Son
package Proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyWork {
public static void main(String[] args) {
IWork son = new Son();
IWork o = (IWork) Proxy.newProxyInstance(son.getClass().getClassLoader(), son.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("父亲我帮你看合同");
method.invoke(son, args);
System.out.println("父亲我帮你拿工资");
return null;
}
});
o.work();
}
}
效果

没有用代理
package Proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyWork {
public static void main(String[] args) {
IWork son = new Son();
IWork o = (IWork) Proxy.newProxyInstance(son.getClass().getClassLoader(), son.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("父亲我帮你看合同");
method.invoke(son, args);
System.out.println("父亲我帮你拿工资");
return null;
}
});
// o.work();
son.work();
}
}
效果

本文介绍了如何使用Java动态代理来创建一个代理类,代理类在调用实际工作方法前后可以添加额外的操作,如检查合同和领取工资。通过示例展示了如何定义接口、实现类以及创建代理对象并执行方法的过程。
761

被折叠的 条评论
为什么被折叠?



