• Java动态代理


    一、定义一个接口

    public interface Plane {
     public void fly();
    }

    二、实现接口中的方法

    public class ManagerImpl implements Plane{

       @Override

       public void fly() {  

         System.out.println("飞机起飞了");

          }  

    }

    三、

    import java.lang.reflect.InvocationHandler;

    import java.lang.reflect.Method;

    public class BusinessHandler implements InvocationHandler{

       private Object object = null;

       public BusinessHandler(Object object) {    

        this.object = object;  

      }

       @Override

       public Object invoke(Object proxy, Method method, Object[] args)    throws Throwable {  

        System.out.println("do something before method");    

        Object ret = method.invoke(this.object, args);     

        System.out.println("do something after method");  

         return ret;

       }

    }

    四、

    import java.lang.reflect.Proxy;

    public class Test {

     public static void main(String[] args) {

         ManagerImpl managerImpl = new ManagerImpl();

           // 业务代理类   

         BusinessHandler securityHandler = new BusinessHandler(managerImpl);

           // 获得代理类($Proxy0 extends Proxy implements Manager)的实例.     

        Plane managerProxy = (Plane) Proxy.newProxyInstance(   

                   managerImpl.getClass().getClassLoader(), managerImpl.getClass().getInterfaces(), securityHandler);

           managerProxy.fly();

       }

    }

  • 相关阅读:
    Azure 云助手主要功能
    静态dll的问题终于搞定了
    青云QingCloud黄允松:最高效的研发管理就是没有管理
    开源libco库:单机千万连接、支撑微信8亿用户的后台框架基石
    青云QingCloud宣布完成C轮融资,金额1亿美元
    NET MVC权限验证
    Fizz-Buzz-Whizz
    API访问客户端
    使用IronPython给.Net程序
    Smart Framework
  • 原文地址:https://www.cnblogs.com/lyz459/p/3056905.html
Copyright © 2020-2023  润新知