內省

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";
     }
}
相關文章
相關標籤/搜索