看一个动态代理的例子
接口:
public interface Hello {
void sayHello(String name);
}
实现:
public class HelloServiceImpl implements Hello {
@Override
public void sayHello(String name) {
System.out.println(" hello :" + name);
}
}
代理类:
public class DynamicProxy implements InvocationHandler {
private Object target;
public DynamicProxy(Object target) {
this.target = target;
}
public <T> T getProxy() {
return (T) Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(target.getClass().newInstance(), args);
}
}
调用:
public class ProxyDemo {
public static void main(String[] args) {
Hello hello = new DynamicProxy(new HelloServiceImpl()).getProxy();
hello.sayHello("peanut");
}
}
具体的代码实现主要是 Proxy.newProxyInstance方法,该方法传递三个参数
ClassLoader loader加载这个代理类的类加载器。Class<?>[] interfaces要实现代理的代理对象接口数组InvocationHandler h动态代理调用的方法
本文通过一个具体的Java动态代理例子,介绍了如何创建一个接口及其实现,并利用动态代理类生成代理对象来调用接口方法。重点讲解了Proxy.newProxyInstance方法的使用。
1530

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



