/**
* JDK动态代理
*/
public class Proxy1{
public static void main(String[] args) {
Rent host = new Host();
WatchHostProxy watchHost = new WatchHostProxy(host);
ContractProxy contract = new ContractProxy(watchHost);
JDKProxy handler = new JDKProxy(contract);
Rent rent = (Rent) handler.getProxy();
rent.rent();
}
}
class JDKProxy implements InvocationHandler {
private Object objectProxy;
public JDKProxy(Object objectProxy) {
this.objectProxy = objectProxy;
}
/**
*
* @param o 被代理的对象
* @param method 被代理的方法
* @param objects 方法参数
* @return
* @throws Throwable
*/
@Override
public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
method.invoke(objectProxy);
return null;
}
//获得到代理类
public Object getProxy(){
return java.lang.reflect.Proxy.newProxyInstance(this.getClass().getClassLoader(),objectProxy.getClass().getInterfaces(),this);
}
}
java动态代理演示代码
最新推荐文章于 2023-06-21 11:12:51 发布