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));
        }
    
    }
  • 相关阅读:
    MySQL 高可用架构在业务层面的分析研究
    HDU 4983 Goffi and GCD(数论)
    Request中的方法调用
    servlet中不能没有无参构造函数
    ServletConfig、ServletContext属性遍历
    Eclipse格式化代码换行、删除空行
    Spring EL中的类操作符
    Spring集合配置
    spring EL表达式,null-safe表达式
    spring的value,null标签
  • 原文地址:https://www.cnblogs.com/chaseblack/p/4722591.html
Copyright © 2011-2022 走看看