package 代理; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class Demo { public static void main(String[] args) { //声明被代理的类 Goudegang gg = new Goudegang(); //添加代理 Object obj = Proxy.newProxyInstance(Demo.class.getClassLoader(), new Class[]{Actor.class}, new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.err.println("拦截方法:"+method.getName()); //放行 Object objs = method.invoke(gg, args); System.err.println("拦截以前的数据 :"+objs); return “原数据被修改"; } }); //向上转接口 Actor ac = (Actor)obj; System.err.println("拦截以后的数据:"+ac.say()); } } //定义一个接口 public interface Actor { public String say(); } //实现接口 package 代理; public class Goudegang implements Actor{ @Override public String say() { System.err.println(“这是个代理方法1"); return "这是个代理方法1"; } }