2019独角兽企业重金招聘Python工程师标准>>>

今天看书的一个过程中,看到一个动态代理看下代码

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;public class DynamicProxy {public static void testDynamicProxy(){Calculator calculator = new CalculatorImpl();LogHandler lh = new LogHandler(calculator);Calculator proxy = (Calculator)Proxy.newProxyInstance(calculator.getClass().getClassLoader(), calculator.getClass().getInterfaces(), lh); //注意这里的调用方式proxy.add(1, 1);}public static void main(String[] args){testDynamicProxy();}}interface Calculator{int add(int a,int b);
}class CalculatorImpl implements Calculator{public int add(int a,int b){return a+b;}
}class LogHandler implements InvocationHandler {Object o;LogHandler(Object o){this.o = o;}public Object invoke(Object proxy, Method method, Object[] args)  //这里使用了反射的机制,具体这里的method要看上面的proxy具体调用的方法throws Throwable {this.doBefore();Object o = method.invoke(proxy, args);this.doAfter();return o;}public void doBefore(){System.out.println("do this before");}public void doAfter(){System.out.println("do this after");}}

这里的好处是,能够在位置类的作用下调用需要使用类型,好处是只需要一个类可以处理多类型

转载于:https://my.oschina.net/u/268957/blog/511360

关于java的一个典型的动态代理相关推荐

  1. 笔试题:写一个ArrayList 的动态代理类

    package com.zhangxueliang.demo;import java.lang.reflect.InvocationHandler; import java.lang.reflect. ...

  2. java中的静态、动态代理模式以及Spring中的CgLib动态代理解读(面试必问)

    java中的静态.动态代理模式以及Spring中的CgLib动态代理解读(面试必问) 静态代理 动态代理 CgLib动态代理     基础知: 反射知识 代理(Proxy)是一种设计模式,提供了对目标 ...

  3. Java基础加强-(注解,动态代理,类加载器,servlet3.0新特性)

    1.   Annotation注解 1.1.  Annotation概述 Annotation是JDK 5.0以后提供对元数据的支持,可以在编译.加载和运行时被读取,并执行相应的处理.所谓Annota ...

  4. Java 进阶(三)动态代理

    文章目录 Java 进阶(三)动态代理 代理模式 定义 作用 静态代理 动态代理 Java 进阶(三)动态代理 要想学习动态代理,首先我们得了解一下代理模式. 代理模式 定义 代理模式给某一个对象提供 ...

  5. 一个简单 JDK 动态代理的实例

    动态代理的步骤: 创建一个实现了 InvocationHandler 接口的类,必须重写接口里的 invoke()方法. 创建被代理的类和接口 通过 Proxy 的静态方法 newProxyInsat ...

  6. Java—反射机制实战及动态代理总结

    关注微信公众号:CodingTechWork,一起学习进步. 引言   反射在Java技术应用中是老生常谈的事了,我们每次都是知道个皮毛,这个反射可以动态获取类的信息,比如类的属性和方法,但是在平时疯 ...

  7. Java大数据-反射和动态代理

    反射的概念: Java反射机制,是说在运行时刻,对于任何一个类,都能够知道它的所有属性和方法:对任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用方法的功能称为java的反射机制 ...

  8. python ip动态代理_给自己的爬虫做一个简单的动态代理池

    使用代理服务器一直是爬虫防BAN最有效的手段,但网上的免费代理往往质量很低,大部分代理完全不能使用,剩下能用的代理很多也只有几分钟的寿命,没法直接用到爬虫项目中. 下面简单记录一下我用scrapy+r ...

  9. Java 面试必考题:动态代理

    前天下午 2 点,坐标西二旗,某一线互联网大厂,面试官问:请讲讲什么是代理?什么是动态代理?什么是 ASM?面对连珠炮的问题,我闯了两关,但没能通关,只能回去等通知了. 回去不吃饭不睡觉,不断总结 J ...

最新文章

  1. 你的 webpack 也需要休息,让你的 webpack 拒绝 996ICU
  2. Mybatis各种模糊查询
  3. 运行iDT算法代码及后续特征编码
  4. 二叉查找树的插入,删除,查找
  5. python列表嵌套字典取值_我的 python 学习历程-Day05 字典/字典的嵌套
  6. 适合 Python 入门的 8 款强大工具,赶紧收藏一波!
  7. 【转】ZooKeeper详细介绍和使用第一节
  8. 扫地机自动回充揭秘 之开启篇
  9. 生活随笔: 毕业之前和毕业之后
  10. 中兴echat_中兴高达震撼发布12款新品 助力专网行业融合发展
  11. Java语言程序设计与数据结构(基础篇)原书第11版
  12. PHP函数array_intersect_ukey
  13. cad卸载不干净_流氓软件卸载不干净?强烈推荐这个工具:Uninstall Tool
  14. 智能开关双控实现方法(附电路图)
  15. 基于SSM框架的实验室设备管理系统
  16. 7、万国觉醒建筑白天黑夜效果(Shader Graph)
  17. 线性代数学习笔记——第四十一讲——n维向量空间的子空间
  18. [JZOJ4949]仙人球
  19. html中div的覆盖,CSS中如何使div覆盖另一个div的实例
  20. canvas-随机粒子特效

热门文章

  1. sql 使用identity(int,1,1)来产生行号。
  2. 无数优秀投资人的选择——GMQ Group
  3. linux 查找目录或文件详解
  4. SQL2008安装后激活方式以及提示评估期已过解决方法(转)
  5. Sql查询一个表中除了某个字段以外的所有字段的方法
  6. Flash Builder 4快速入门----学习笔记
  7. 防用户误删除,耗费一周时间把DeleteMark标志都加上来了,所有的删除操作从“物理删除”转为“逻辑删除”...
  8. 跳车开发者Pokkst自述——从BTC到BCH
  9. BCH三小时缓慢出块——需要重视的小概率事件
  10. BTC跟跌黄金,BCH领涨主流 2019.8.14