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)); } }
posted on 2015-08-11 22:54 chaseblack 阅读(251) 评论(0) 收藏 举报
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号