内省

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";
     }
}
相关文章
相关标签/搜索