zoukankan      html  css  js  c++  java
  • Java动态代理实现方法

    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    
    public class LogHandler implements InvocationHandler {
        private Object delegate;
    
        public Object bind(Object delegate) {
            this.delegate = delegate;
            return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
                    delegate.getClass().getInterfaces(), this);
        }
    
        @Override
        public Object invoke(Object proxy, Method method, Object[] args)
                throws Throwable {
            Object result = null;
            try {
                System.out.println("方法开始:" + method);
                result = method.invoke(delegate, args);
                System.out.println("方法结束:" + method);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    }
    public interface Animal {
        public void hello();
    }
    public class Monkey implements Animal {
    
        @Override
        public void hello() {
            // TODO Auto-generated method stub
            System.out.println("hello");
        }
    }
    public class Main {
        public static void main(String[] args) {
            LogHandler logHandler = new LogHandler();
            Animal animal = (Animal) logHandler.bind(new Monkey());
            animal.hello();
        }
    }


    运行结果:

  • 相关阅读:
    Java从零开始学二十一(集合List接口)
    Java从零开始学二十(集合简介)
    初识软件工程一
    JAVA中AES对称加密和解密
    java中的数据加密
    Redis哨兵
    Nginx
    Zuul介绍
    ELK快速搭建日志平台
    Kibana安全特性之权限控制
  • 原文地址:https://www.cnblogs.com/taoweiji/p/3613262.html
Copyright © 2011-2022 走看看