zoukankan      html  css  js  c++  java
  • jdk动态代理实现

    1、jdk动态代理的简单实现类

    package com.proxy;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    
    public class JDKProxy implements InvocationHandler{
    
        private Object target;//目标对象
        
        public JDKProxy(Object target) {
            super();
            this.target = target;
        }
    
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            System.out.println("--------------------invoke-before----------------------");
            Object object = method.invoke(target, args);
            System.out.println("--------------------invoke-after----------------------");
            return object;
        }
        
        public Object getProxy(){
            return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
        }
        
    
    }

    2、测试用接口和接口实现

    package com.proxy.manager;
    
    public interface HelloWorldManager {
        
        public void sayHello();
    
    }
    package com.proxy.manager.impl;
    
    import com.proxy.manager.HelloWorldManager;
    
    public class HelloWorldManagerImpl implements HelloWorldManager {
    
        @Override
        public void sayHello() {
            System.out.println("Hello World!");
        }
    
    }

    3、测试类

    package com.proxy.test;
    
    import com.proxy.JDKProxy;
    import com.proxy.manager.HelloWorldManager;
    import com.proxy.manager.impl.HelloWorldManagerImpl;
    
    public class JDKProxyTest {
        
        public static void main(String[] args) {
            HelloWorldManager hw = new HelloWorldManagerImpl();
            JDKProxy jdkProxy = new JDKProxy(hw);
            HelloWorldManager hellWorldManager = (HelloWorldManager) jdkProxy.getProxy();
            hellWorldManager.sayHello();
        }
    
    }

    4、测试输出接口

    --------------------invoke-before----------------------
    Hello World!
    --------------------invoke-after----------------------
    
  • 相关阅读:
    Globus Toolkit 4.0正式版发布
    五四爱国纪念歌——最早反映五四运动的歌曲(zz)
    历史上的昨天和今天(zz)
    苹果:2.7GHz G5比3.6GHz P4快98%(zz)
    上海地铁又有人跳轨……
    使用IPAddress解析IP地址时要注意的问题
    WinHEC:电脑硬件和微软OS发展历程展(zz)
    emplace_back与push_back方法的区别
    处理Excel,填充空白区域
    折腾词库,一个词库互转程序
  • 原文地址:https://www.cnblogs.com/miaoyf/p/6130592.html
Copyright © 2011-2022 走看看