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"; } }