public interface IReport {
String published();
}
public class Report implements IReport{
public String published() {
System.out.println("hello~~~");
return "return Hello";
}
}
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class ReportProxy implements InvocationHandler{
Object sub;
public ReportProxy() {
super();
}
public ReportProxy(Object obj) {
super();
this.sub = obj;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("11111111111111");
Object obj = method.invoke(sub, args);
System.out.println("22222222222222");
return obj;
}
}
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
public class Client {
public static void main(String[] args) {
//建立真正的实现实例
IReport rep = new Report();
//创建动态代理类
ReportProxy dynamicProxy = new ReportProxy(rep);
//获取CLASS
Class ds = rep.getClass();
//创建代理实例
Object obj = Proxy.newProxyInstance(ds.getClassLoader(), ds.getInterfaces(), dynamicProxy);
//强制转换
IReport repProxy = (IReport)obj;
//通过代理执行方法
Object retObj = repProxy.published();
//获取并打印方法执行结果
System.out.println(retObj);
}
}