java动态代理简单实例

2023-11-20

java动态代理简单实例
package hello;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;


interface AbstractClass {
	public void show();
}

class ClassA implements AbstractClass {
	public void show() {
		System.out.println("我是A类");
	}
}

// 具体类B  
class ClassB implements AbstractClass {  
    public void show() {  
        // TODO Auto-generated method stub  
        System.out.println("我是B类!");  
    }  
}  

class Invoker implements InvocationHandler {
	AbstractClass ac;
	public Invoker(AbstractClass ac) {
		this.ac = ac;
	}
	
	public Object invoke(Object proxy, Method method, Object[] arg) throws Throwable {
		method.invoke(ac, arg);
	    return null;
	}
}


// test
class HelloWorld {
	public static void main(String[] args) {
		Invoker invoker1 = new Invoker(new ClassA());
		AbstractClass ac1 = (AbstractClass) Proxy.newProxyInstance(AbstractClass.class.getClassLoader(), new Class[]{AbstractClass.class},invoker1);
		ac1.show();
		Invoker invoker2 = new Invoker(new ClassA());
		AbstractClass ac2 = (AbstractClass) Proxy.newProxyInstance(AbstractClass.class.getClassLoader(), new Class[]{AbstractClass.class},invoker2);
		ac2.show();		
}
}

执行结果是:
  1. 我是A类!  
  2. 我是B类!  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java动态代理简单实例 的相关文章

  • 今天发现rabbitMQ消息堆积

    发现有三十多万的消息堆积在10的queue里没有被消费 记录一下查看问题的步骤 1 jps 找出程序的PID 2 jstack PID 查看线程dump 发现rabbitMQ的consumer worker线程block住了 Thread
  • 黑马程序员---从头开始,回忆JAVA基础之JAVA用十六进制表示浮点数的方法

    在二进制文件中 存储数据的格式为16进制 下面举例说明27 0f在二进制文件中怎么表示 float 共计32位 折合4字节 由最高到最低位分别是第31 30 29 0位 31位是符号位 1表示该数为负 0反之 30 23位 一共8位是指数位
  • 根据图片地址得到文件流

    得到文件流 param url 图片地址 return public static byte getFileStream String url try URL httpUrl new URL url HttpURLConnection co
  • JAVA: quakus程序运行

    mvnw compile quarkus dev
  • 动力节点老杜java基础视频笔记第一章 学前准备 (1)

    课堂截图 为什么使用截图工具 在听课的过程中 有的时候老师操作的比较快 通过截图的方式将老师的操作保存下来 以便后期的操作 另外截图之后的图片也可以用于笔记的记录 在笔记当中最好采用图文并茂的方式 这样更加利于知识的回顾 使用哪个截图工具
  • Java特训的第一天——开篇

    我是一名刚入门的Java菜鸟 我选择Java的原因是因为其语法简单 功能强大 从web 到桌面 到嵌入式 无所不能 下面我将谈一谈我对Java语言的认识 Java语言概述 关于Java的介绍网上有很详细的阐述 我在这里就不再细述了 下面只简
  • Java基础——strictfp关键字

    关键字strictfp是strict float point的缩写 指的是精确浮点 它是用来确保浮点数运算的准确性 JVM在执行浮点数运算时 如果没有指定strictfp关键字 此时计算结果可能会不精确 而且计算结果在不同平台或厂商的虚拟机
  • FullGC问题分析

    一 常见的FullGC场景分析 频繁的大对象 大对象直接被分配到老年代 系统高负载运行 请求量很大 jvm来不及将对象转移到老年代 直接到老年代分配对象 系统内存泄漏 导致对象长时间在老年代 得不到释放 二 产生FullGC的原因 Syst
  • 5、面向对象的设计思想

    一 面向对象设计思想 1 1 面向过程的设计思想与面向对象的设计思想 例如 我要去新疆 面向过程 我开车 我挂挡 我踩油门 我过河北 我过陕西 面向对象 我命令车去新疆 车怎么去不关我事 信息封装在这这个类的内部 我不用去了解车整个开动的过
  • 7.java类中的方法

    1 类中的方法 1 实例方法 格式 访问限制修饰符 方法的返回值数据类型 方法名称 参数列表 方法体 解释 访问限制修饰符 public 缺省的 方法的返回值数据类型 就是方法的执行结果类型 有返回值时 方法的返回值数据类型一定是方法执行结
  • 【Java】Java中的String类

    文章目录 一 认识 String 类 二 String 类的常用方法 2 1 构造方法 2 2 String 类对象之间的比较 2 3 字符串查找 2 4 字符串的转换 2 5 字符串替换 2 6 字符串拆分 2 7 字符串截取 2 8 字
  • ThreadLocal学习

    1 threadLocal图解 java lang ThreadLocal类实现了线程的本地存储 ThreadLocal的内部实现 ThreadLocal的内部实现包括一个类似HashMap的对象 这里称之ThreadLocalMap Th
  • 各种注释总结

    jsp注释 html注释
  • [透彻]为什么要前后端分离?

    前后端分离的意义 前后端分离 已成为互联网项目开发的业界标准使用方式 前后端分离 会为以后的大型分布式架构 弹性计算架构 微服务架构打下坚实的基础 核心思想 前端页面调用后端的restuful api接口 并使用json数据进行交互 服务器
  • POI解析word\pdf中表格

  • 第一个java程序helloworld代码的编写

    第一个java程序helloworld代码的编写 文章目录 第一个java程序helloworld代码的编写 toc 一 项目 二 认识JVM JRE和JDK 2 1 JVM是什么 2 2 JVM的主要功能和作用 2 3 JRE和JDK J
  • java 模拟库存管理系统

    本案例要求编写一个程序 模拟库存管理系统 该系统内容主要包括 商品入库 商品显示 和删除商品功能 此程序用手机举例 此管理系统分别为两个类Phone 和Test类 Phone类 确定四个变量 类 1 生成空参数构造方法 2 全部参数的构造方
  • Java中count++的坑

    最近做了一道题 非常容易落入陷阱 当count初始值为0 count count 和count count 运行出来的结果是不一样的 count count 运行出来的结果依旧为0 这是因为JVM运行时 会把count变量拷贝到到临时变量区
  • 多线程下载文件(支持暂停、取消、断点续传)

    多线程下载文件 支持暂停 取消 断点续传 多线程同时下载文件即 在同一时间内通过多个线程对同一个请求地址发起多个请求 将需要下载的数据分割成多个部分 同时下载 每个线程只负责下载其中的一部分 最后将每一个线程下载的部分组装起来即可 涉及的知
  • IDEA 编写JDBC 第一个示例

    知心惟有雕梁燕 自来相伴 东风不管琵琶怨 落花吹遍 一 新建一个Module 二 在此Module下新建一个包 在包再建一个包 命名为lib 三 导入mysql驱动 四 将mysql驱动添加到项目的库里 五 代码实现 package Con

随机推荐

  • node mysql高级用法_nodejs中mysql用法

    1 建立数据库连接 createConnection Object 方法 该方法接受一个对象作为参数 该对象有四个常用的属性host user password database 与php中链接数据库的参数相同 属性列表如下 host 连接
  • Xray使用教程

    简介 Xray是长亭科技开发的一款漏扫工具 支持多种扫描方式和漏洞类型 可自定义POC Proof of Concept 概念验证 即漏洞验证程序 俺是在 乌雲安全 看到了这个工具的使用 作为一个脚本小子初学者 这里做一下笔记 使用 web
  • NVDLA系列之C-model:cvif<99>

    NV NVDLA cvif cpp WriteRequest sdp2cvif void NV NVDLA cvif WriteRequest sdp2cvif uint64 t base addr uint64 t first base
  • 通过递归,实现数组转树

    一 为什么需要数组转树 当我们做后台管理系统时难免会遇到关于公司组织架构这样的模块 一个部门下会有好几个小部门 这时我们就可以运用树形图来更好地进行查看 下面简单举例 将数组 const arr id 1 pid 0 name 生鲜 id
  • linux安装分区详解lvm,Linux下LVM的配置详解

    LVM是Logical Volume Manager 逻辑卷管理器 的简写 它为主机提供了更高层次的磁盘存储管理能力 LVM可以帮助系统管理员为应用与用户方便地分配存储空间 在LVM管理下的逻辑卷可以按需改变大小或添加移除 另外 LVM可以
  • 【正点原子探索者STM32F407开发板例程连载+教学】第30章 SPI通信实验

    第三十章 SPI 实验 mw shl code c true 1 硬件平台 正点原子探索者STM32F407开发板 2 软件平台 MDK5 1 3 固件库版本 V1 4 0 mw shl code 本章我们将向大家介绍STM32F4的SPI
  • upload-labs通关(Pass-06~Pass-10)

    目录 Pass 06 Pass 07 Pass 08 Pass 09 Pass 10 Pass 06 上传sh php失败 burp中将抓到的包send to repeater 修改filename为sh xxx发现可以上传成功 说明是黑名
  • 线上常见问题排查之CPU过高

    目前应用程序基本是Java 所以需要登录docker容器内部执行jstack命令打印堆栈信息再分析 确认目标进程 执行top命令查看CPU占用情况 找出CPU占用高的进程ID PS 输入大写P即可按照CPU占比排序进程 即 Shift p
  • BMP图像读取数据

    我们在使用Windows的画图软件 画一张图 然后保存成24位位图BMP图像后 要对这幅图像进行一系列的格式转换之前 需要先将BMP里的数据提取出来 然后再保存成BGR888的图像 有两处细节要注意 第一 我们直接保存成BMP图片 不知道为
  • [项目管理-25]:高效沟通的利器,结构思考力与树形结构化表达

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 前言 第1章 结构化思考力概述 1 1 非结构化思考力的问题与结构化思路力的好处 1 2 什么是结构化思路力 1 3 三大沟通层次 层
  • vue prop属性使用方法小结

    Prop 一 基本用法 Prop的基本用法很简单 作用是在子组件中接收父组件的值 父组件传值
  • Allegro如何调整丝印字号

    1 设置颜色管理器 先将所有的都关掉 如果要调节top层丝印 打开top层的焊盘和阻焊层 绿油层 打开板框 丝印和位号 2 选择 设置字号 在Edit中执行Change命令 Find中选择Text 在Options中勾选刚才修改的2号字体
  • JSON首字母大写问题

    一般如果json中的字段和类里的属性相同 则不需要修改 如果不同则可以在类的属性上添加 JsonProperty 或者 JSONField 但是如果JSON数据或者类中属性首字母大写的话 只能使用 JsonProperty 否则注入的值是n
  • Spring学习笔记总结

    第一章 引言 1 EJB存在的问题 2 什么是Spring Spring是一个轻量级的JavaEE解决方案 整合众多优秀的设计模式 轻量级 1 对于运行环境是没有额外要求的 开源 tomcat resion jetty 收费 weblogi
  • 浅谈音视频开发入门基础及进阶资源分享

    导言 音视频开发涉及的知识面比较广 知识点又相对独立琐碎 入门门槛相对较高 想要对音视频开发具有深入全面的了解 需要在行业深耕多年 本文将简单介绍音视频的采集 编解码 传输 渲染四个技术点并对涉及到的知识点和原理进行解释 希望你可以对音视频
  • JAVA并发:线程安全与Synchorinzed

    1 什么是线程安全问题 线程的合理使用能够提升程序的处理性能 主要有两个方面 第一个是能够利用多核 cpu 以及超线程技术来实现线程的并行执行 第二个是线程的异步化执行相比于同步执行来说 异步执行能够很好的优化程序的处理性能提升并发吞吐量
  • 强符号与弱符号

    文章目录 强符号不允许多次定义 强弱可以共存 都是弱符号 简而言之 在 C 语言中 函数和初始化的全局变量 包括显示初始化为 0 是强符号 未初始化的全局变量是弱符号 在链接器进行链接的时候 有下面的规则 强符号不允许多次定义 即不同的目标
  • 多少个X 蓝桥杯模拟

    问题描述 给定一个字母矩阵 一个 X 图形由中心点和由中心点向四个45度斜线方向引出的直线段组成 四条 线段的长度相同 而且四条线段上的字母和中心点的字母相同 一个 X图形可以使用三个整数 r c L 来描述 其中 r c 表示中心点位于第
  • QT 数据库

    sqlite SQLITE功能简约 小型化 追求最大磁盘效率 支持跨平台 不需要服务器 在本地的 数据库操作基本的功能QT里面都有 可视化软件也很小 有支持关系模式的model In memory database IMDB 即内存数据库
  • java动态代理简单实例

    java动态代理简单实例 package hello import java lang reflect InvocationHandler import java lang reflect Method import java lang r