需要 implements InvocationHandler
如`
public class Objeproxy implements InvocationHandler{
private Object target;
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(target, args);
}
必须获取invoke方法`method为方法 args为参数
代理过程:
`BankService bs = new BankServiceImpl();
bs.transfer("zhangsan", "lisi", new BigDecimal("1.999"));
BankService bsproxy = (BankService) new Objeproxy().createProxy(bs);
bsproxy.transfer("張三", "Lisi", new BigDecimal("0.3"));`
bs为被代理 bsproxy为代理 代理的是类不会获取被代理类的对象的参数 并且必须为接口实现类
createProxy为Objeproxy 的方法 可通过构造方法直接创建对象
如下
public Object createProxy(Object target) {
this.target = target;
return Proxy.newProxyInstance(this.getClass().getClassLoader(),target.getClass().getInterfaces(),this);
//getClassLoader() 类加载器 加载被代理与代理对象 getInterfaces()获取被代理对象所有接口 了解(jdk java虚拟机)
}
6万+

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



