动态代理案例1:
/*要求:运用Proxy动态代理来增强方法
题目:
    1.定义接口Fruit,其中有addFruit方法
    2.定义实现类FruitImpl,实现Fruit接口
    3.定义测试类,利用动态代理类的方式,增强addFruit方法*/

  1 import java.lang.reflect.Proxy;
  2  import java.lang.reflect.InvocationHandler;
  3  import java.lang.reflect.Method;
  4  import java.lang.reflect.InvocationTargetException;
  5
  6 //接口
  7 interface Fruit{
  8      public abstract void addFruit();
  9  }
 10
 11 //实现类
 12 class FruitImpl implements Fruit{
 13      @Override
 14      public void addFruit(){
 15          System.out.println("添加水果...");
 16      }
 17  }
 18
 19 //测试类---编写代理,增强实现类中的方法
 20 public class FruitDemo{
 21      public static void main(String[] args){
 22          //创建动态代理对象
 23         Object f = Proxy.newProxyInstance(FruitImpl.class.getClassLoader(), FruitImpl.class.getInterfaces(),
 24              new InvocationHandler(){
 25                  @Override
 26                  public Object invoke(Object Proxy, Method method, Object[] args){
 27                      System.out.println("选择水果.....................");
 28                      Object obj = null;
 29                          try{
 30                              obj = method.invoke(new FruitImpl(),args);
 31                          }catch(IllegalAccessException | InvocationTargetException | IllegalArgumentException e){
 32                              e.printStackTrace();
 33                          }
 34                      System.out.println("添加成功~~");
 35                      return obj;
 36                  }
 37              }
 38          );
 39
 40         //代理对象向下(接口)转型
 41         Fruit f1 = (Fruit) f;
 42
 43         //转型后的对象执行原方法(已增强)
 44          f1.addFruit();
 45      }
 46  }
 47 

转载于:https://www.cnblogs.com/huguangqin/p/7137551.html

动态代理案例1:运用Proxy动态代理来增强方法相关推荐

  1. Java进阶 | Proxy动态代理机制详解

    一.Jvm加载对象 在说Java动态代理之前,还是要说一下Jvm加载对象的过程,这个依旧是理解动态代理的基础性原理: Java类即源代码程序.java类型文件,经过编译器编译之后就被转换成字节代码.c ...

  2. 什么是动态代理?动态代理有哪些应用?如何编写动态代理案例

    什么是动态代理? 当我们需要给某个类或者接口中的方法添加一些额外的功能比如日志.事务的时候,可以通过创建一个代理类来实现这些功能:该代理类既包含了原有类的完整功能,同时在这些功能的基础上添加了其他的逻 ...

  3. 静态代理和动态代理案例介绍

    静态代理和动态代理案例介绍 1.代理模式概念 2.代理模式分类 3.静态代理(1) [1]目标 [2]实现 [2.1]创建项目 [2.2]定义HouseAgencyCompany [2.3]定义Hou ...

  4. Proxy 动态代理 InvocationHandler CGLIB MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. JDK的动态代理深入解析(Proxy,InvocationHandler)(转)

    一.什么是动态代理 动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实.代理一般会实现它所表示的实际对象的接口.代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际对象实现系统的实际 ...

  6. java 动态代理范例 InvocationHandler与Proxy

    java 动态代理范例 InvocationHandler与Proxy,拦截与代理 java.lang.reflect.Proxy, Proxy 提供用于创建动态代理类和实例的静态方法. newPro ...

  7. 动态代理最全详解系列[2]-Proxy生成代理类对象源码分析

      之前我们通过JDK中的Proxy实现了动态代理,Proxy用起来是比较简便的,但理解起来不是那么清晰,是因为我们并没有看见代理类是怎么生成的,代理类怎么调用的被代理类方法,所以下面我们进入源码看一 ...

  8. Java动态代理详解(Proxy+InvocationHandler)

    文章目录 1. 什么是代理 2. 静态代理 2.1 静态代理代码示例 2.2 静态代理总结 2.3 静态代理优缺点 3. 动态代理 3.1 动态代理概念 3.2 动态代理例子 4. 原理解析 1. 什 ...

  9. 代理模式——静态代理,动态代理(JDK代理和CGLib代理)

    概述 由于某些原因需要给某对象提供一个代理以控制对该对象的访问. 这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介. Java中的代理按照代理类生成时机不同又分为 ...

最新文章

  1. 5G加速下的云办公时代来临?阿里云新品服务器 - 无影云桌面的服务开通与体验,本地客户端连接阿里云无影云桌面演示
  2. arm clz指令c语言,协处理器及其他指令之:零计数指令CLZ-嵌入式系统-与非网
  3. 《MySQL——关于grant赋权以及flush privileges》
  4. 进程、线程相关知识点整理
  5. Yii 关于AR分表
  6. yolo3做行人检测+deep-sort做匹配,端对端做多目标跟踪
  7. 80后的80条幽默有哲理的语录
  8. 再记AE与AO的区别与联系
  9. 西门子Step7安装和入门初步
  10. word2vec加载异常解决:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position。。。
  11. 普罗旺斯的花海。薰衣草的花语,是等待爱情
  12. IPv6路由(学习日记)
  13. 参加珠海苹果售后维修体验
  14. Qt opengl 图片实现3D效果
  15. ubuntu文件系统字体底纹含义
  16. empty() 是 (boolean) var 的反义词 is_null() 是 is_set() 的反义词!
  17. 数据安全分类分级实施指南_不平衡数据集分类指南
  18. 功能测试_测试用例设计方法
  19. springboot+easyexcel实现固定表头+动态表头的数据导出
  20. Edge浏览器查看md文件

热门文章

  1. Android6.0 keyguard锁屏加载流程分析
  2. [Android 插件化(一)] DynamicLoadApk的用法
  3. 内核 kmap_atomic分析
  4. elasticsearch备份恢复(单机集群)
  5. python中链表和数组_Python
  6. 三个箭头循环标志_沧州交通标志杆直销
  7. 训练好的神经网络 如何预测_显存不够,如何训练大型神经网络?
  8. 面向对象发牌Java_面向对象思路的斗地主发牌小程序
  9. python提取数据包中的文件_Python-对Pcap文件进行处理,获取指定TCP流
  10. python 变量转字符串_[Python Basic] 字符串处理以及类型转换 2