动态代理代码段

来源:互联网 发布:潮汕女孩知乎 编辑:程序博客网 时间:2024/06/07 09:55
 class  MethodSelector implements InvocationHandler{private Object proxied;public MethodSelector(Object proxied) {super();this.proxied = proxied;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {//可以增加方法的判断 并增加内容 if(method.getName().equals("interesting"))System.out.println("Proxy detected the interesting method");return method.invoke(proxied, args);}} interface SomeMethods{ void boring1(); void boring2(); void boring3(); void interesting(String arg); }   class Inplementation implements SomeMethods{@Overridepublic void boring1() {// TODO Auto-generated method stubSystem.out.println("boring1");}@Overridepublic void boring2() {// TODO Auto-generated method stubSystem.out.println("boring2");}@Overridepublic void boring3() {// TODO Auto-generated method stubSystem.out.println("boring3");}@Overridepublic void interesting(String arg) {// TODO Auto-generated method stubSystem.out.println("interesting"+arg);}   }   public class SelectingMethods{  public static void main(String[] args) {SomeMethods proxy=(SomeMethods)Proxy.newProxyInstance(SomeMethods.class.getClassLoader(), new Class[]{SomeMethods.class},new MethodSelector(new Inplementation()));proxy.boring1();proxy.boring2();proxy.boring3();proxy.interesting("bonobo");} }