zoukankan      html  css  js  c++  java
  • Java Dynamic proxy

    //Count.java
    public interface Count {
        public int add(int a, int b);
    }
    
    // CountImpl.java
    public class CountImpl implements Count{
    
        @Override
        public int add(int a, int b) {
            // TODO Auto-generated method stub
            return a+b;
        }
    }
    //Run.java
    public interface Run {
        public float inc(float distance);
    }
    
    //RunImpl.java
    public class RunImpl implements Run{
        float dis;
    
        @Override
        public float inc(float distance) {
            // TODO Auto-generated method stub
            return dis+distance;
        }
    }
    //MyProxy.java
    
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    
    public class MyProxy implements java.lang.reflect.InvocationHandler{
        
        Object proxyee;
        
        public Object bind(Object to_be_proxyed){
            proxyee=to_be_proxyed;
            Object proxy=Proxy.newProxyInstance(proxyee.getClass().getClassLoader(),proxyee.getClass().getInterfaces(), this);
            return proxy;
        } 
    
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            //do something before calling proxyee's method
            Object result=method.invoke(proxyee, args);
            //do something after calling proxyee's method
            return result;
        }
        
        public static void main(String[] args){
            
            CountImpl ci=new CountImpl();
            RunImpl ri=new RunImpl();
            
            MyProxy myproxy=new MyProxy();
            
            Run r=(Run)myproxy.bind(ri);
            System.out.println(r.inc(3));
            /**why it is still 3 ?**/
            System.out.println(r.inc(3));
            
            Count c=(Count)myproxy.bind(ci);
            System.out.println(c.add(1, 2));
            System.out.println(c.add(1, 3));
        }
    
    }
  • 相关阅读:
    破解百度云盘MAC下载限速问题
    win7 磁盘碎片整理
    python语言快捷注释
    PyCharm字体大小调整
    python pip安装requests库总提示:Fatal error in launcher...''
    请求过程中,需要证书认证,这种情况下如何处理
    python post接口测试第一个用例日记
    常用Linux命令
    接口测试意义及实现的方式
    TypeError: unbound method
  • 原文地址:https://www.cnblogs.com/chaseblack/p/4722591.html
Copyright © 2011-2022 走看看