知识大全 java动态代理Dynamic Proxy

Posted

篇首语:世事洞明皆学问,人情练达即文章。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java动态代理Dynamic Proxy相关的知识,希望对你有一定的参考价值。

java动态代理Dynamic Proxy  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   被代理对象的接口:

   package test dynamicproxy;

  

   public interface TargetInterface

        public void SayHello();

        public int sum(int a int b);

  

   被代理的对象:

   package test dynamicproxy;

  

   public class Target implements TargetInterface

  

        public void SayHello()

            System out println( Hello );

       

        public int sum(int a int b)

            return a+b;

       

  

   InvocationHandler包装:

   package test dynamicproxy;

  

   import java lang reflect InvocationHandler;

   import java lang reflect Method;

  

   public class TargetInvocationHandler implements InvocationHandler

  

        private Object object;

        public TargetInvocationHandler(Object obj)

            this object=obj;

       

  

        public Object invoke(Object proxy Method method Object[] args )

        throws Throwable

       

            doBefore();

            Object result = method invoke(object args );

            doAfter();

            return result;

       

  

        public void doBefore()

            System out println( do before );

       

  

        public void doAfter()

            System out println( do after );

       

  

   测试类:

   package test dynamicproxy;

  

   import java lang reflect Proxy;

  

   public class TestDynamicProxy

  

        /**

         * @param args

         */

        public static void main(String[] args)

            Target t=new Target();

            TargetInvocationHandler handler=new TargetInvocationHandler(t);

  

            TargetInterface proxy = (TargetInterface) Proxy newProxyInstance(

                    t getClass() getClassLoader()

                    t getClass() getInterfaces()

                    handler);

  

            proxy SayHello();

  

            int b=proxy sum( );

            System out println(b);

       

  

cha138/Article/program/Java/hx/201311/26689

相关参考