zoukankan      html  css  js  c++  java
  • 自己写一个简单的代理类实现对一个普通类中sayhello的调用

    要用代理类实现调用的类方法

    class Test{

      public  void sayHello{

       system.out.println("hello World!");

      }

    }

    首先代理类是 必须要实现接口

    public interface ISayHello {
        public void sayHello(String name);
    }
    public class SayHelloImpl implements ISayHello{
        public void sayHello(String name) {
            System.out.println("Hello World!"+name);
        }
    }

    其次定义完了接口和实现类之后就可以定义自己的调用处理类(动态代理中最重要的就是 Proxy 代理实例 和 InvocationHandler )

    public class MyInvocationHandler implements InvocationHandler{
        private Object implObject ;
        
        public MyInvocationHandler (Object implObject){
            this.implObject=implObject;
        }
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            doBefore();
            method.invoke(implObject, args);
            doAfter();
            return null;
        }
        
        private void doBefore(){
            System.out.println("执行前添加打印时间:"+System.currentTimeMillis());
        }
        private void doAfter(){
            System.out.println("执行后添加打印时间:"+System.currentTimeMillis());
        }
    }

    最后就是写测试类了:

    public static void main(String[] args) {
    ISayHello sayhello = new SayHelloImpl();
    ISayHello proxy = (ISayHello) Proxy.newProxyInstance(SayHelloImpl.class.getClassLoader(), SayHelloImpl.class.getInterfaces(), new MyInvocationHandler(sayhello));
    proxy.sayHello("gmm");

    }

    执行结果:

    执行前添加打印时间:1520320424505
    Hello World!gmm
    执行后添加打印时间:1520320424506

  • 相关阅读:
    一文读懂快速排序
    15道APP测试面试题分享,助攻你的面试
    APP测试之使用ADB可能遇到的错误及解决办法
    APP测试之Monkey压力测试(二)
    APP测试之Monkey压力测试(一)
    APP日志文件抓取及分析
    Linux环境安装python3
    visualvm 插件 visual gc 使用介绍
    设计模式之状态
    【深入理解JVM】:Java内存模型JMM
  • 原文地址:https://www.cnblogs.com/sailormoon/p/8514508.html
Copyright © 2011-2022 走看看