java 动态代理代码
最近学了java 代理,感觉很神奇,尤其是动态代理,功能真是强大,如果有了动态代理,那么黑客是不是更加发展一步呢。。。
实现java动态代理,主要实现几个步骤
1.实现 InvocationHandler 接口,然后实现 public Object invoke(Object proxy, Method m, Object[] args) 方法,代码如下
package com.chapter1.dynamicproxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class ProxyHandler implements InvocationHandler{ private Object proxied; public ProxyHandler(Object proxied){ this.proxied = proxied; } @Override public Object invoke(Object proxy, Method m, Object[] args) throws Throwable { // TODO Auto-generated method stub System.out.println("before"); m.invoke(this.proxied, args); return null; } }
2. 应用步骤
package com.chapter1.dynamicproxy; import java.lang.reflect.Proxy; public class Test { public static void main(String[] args) { RealCoder rc = new RealCoder(); ProxyHandler ph = new ProxyHandler(rc); Coder proxyc = (Coder)Proxy.newProxyInstance(rc.getClass().getClassLoader(),rc.getClass().getInterfaces(), ph); proxyc.coding(); } }
rc 是被代理的对象,ph是自己创建的对象,然后用 Proxy 创建代理实例再调用方法。
时间: 2024-10-11 03:38:28