Java.动态代理

news2024/9/28 23:31:55

1.创建一个接口

package Mydynamicproxy1;

public interface Star {

    public abstract String sing(String str);
    public abstract void dance(String str);
}

2.创建一个BigStar类,要实现Star这个接口

package Mydynamicproxy1;

public class BigStar implements Star{

    private String num;

    @Override
    public String sing(String song){
        System.out.println("正在唱歌"+song);
        return "唱完了谢谢";
    }
    @Override
    public void dance(String dan){
        System.out.println("正在跳舞"+dan);
    }


    public BigStar() {
    }

    public BigStar(String num) {
        this.num = num;
    }

    /**
     * 获取
     * @return num
     */
    public String getNum() {
        return num;
    }

    /**
     * 设置
     * @param num
     */
    public void setNum(String num) {
        this.num = num;
    }

    public String toString() {
        return "BigStar{num = " + num + "}";
    }
}

 3.代理的类

package Mydynamicproxy1;

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

public class ProxyUtil {
    public static Star createStar(BigStar bigstar) {

        Star star = (Star)Proxy.newProxyInstance(
                ProxyUtil.class.getClassLoader(),
                new Class[]{Star.class},
                new InvocationHandler() {
                    @Override
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

                        if("sing".equals(method.getName())){
                            System.out.println("准备话筒,收钱");
                        }else{
                            System.out.println("准备场地,收钱");
                        }
                        return method.invoke(bigstar, args);
                    }
                }


        );


        return star;
    }

}

4.Test类

package Mydynamicproxy1;

public class Test {
    public static void main(String[] args) {

        BigStar bigStar=new BigStar("cxk");
        Star proxy=ProxyUtil.createStar(bigStar);

        System.out.println(proxy.sing("aaa"));

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2168443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

甘肃非遗文化网站:Spring Boot开发实战

3 系统分析 当用户确定开发一款程序时,是需要遵循下面的顺序进行工作,概括为:系统分析–>系统设计–>系统开发–>系统测试,无论这个过程是否有变更或者迭代,都是按照这样的顺序开展工作的。系统分析就是分析系…

Java EE中的编码问题及解决方案

Java EE中的编码问题及解决方案 在Java EE开发中,处理字符编码是确保数据正确传输和显示的重要环节。不同的编码不一致会导致乱码,影响用户体验。本文将总结在Java EE中可能遇到的编码问题及其解决方案。 1. 输入数据编码问题 在表单提交时&#xff0c…

【中级通信工程师】终端与业务(三):电信业务

【零基础3天通关中级通信工程师】 终端与业务(三):电信业务 本文是中级通信工程师考试《终端与业务》科目第三章《电信业务》的复习资料和真题汇总。终端与业务是通信考试里最简单的科目,有效复习通过率可达90%以上,本文结合了高频考点和近几…

代码随想录算法训练营第十六天|512.找树左下角的值 112. 路径总和 113. 路径总和ii 106.从中序与后序遍历序列构造二叉树

512.找树左下角的值 给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 示例 2: 思路: 递归三部曲: 参数和返回值:传入节点是参数,返回值是最终值int终止条件:遇到空节点直接返回,或者…

SD2.0 Specification之写保护

文章目录 1 机械开关写保护(由主机负责实现效果)2 卡内部写保护(由卡负责实现)3 密码写保护 本文章主要讲解关于SD2.0写保护功能的内容,基础概念和其它内容请参考以下文章。 SD2.0 Specification简述 SD卡支持3种写保护…

论文阅读《Co-clustering for Federated Recommender System》

论文概况 本文是2024 WWW的一篇联邦推荐论文,提出了一个基于特定类别物品相似度来进行聚类的联邦推荐框架。 Introduction 分析了经典聚类技术KMeans在联邦推荐设置中的不足,提出了一种新的共聚类联邦推荐机制CoFedRec,该机制在每个通信回合…

华为NAT ALG技术的实现

双向NAT技术:经过防火墙的2报文源IP地址和目的IP地址都同时被转换,外网发送报文给内网服务器,先转换目的IP地址,然后符合安全策略后,在替换源IP地址,然后将记录写入防火墙会话表,并发送出报文&a…

结构化知识抽取案例

假设我们有一个包含中文电影信息的数据库表 movies,其中包含以下字段: movie_id (电影ID)title (电影标题)year (上映年份)genre (类型)director (导演)rating (评分) 表中的部分数据如下: 知识抽取步骤 数据获取:从数据库中查…

WAF,全称Web Application Firewall,好用WAF推荐

WAF,全称Web Application Firewall,即Web应用防火墙,是一种网络安全设备,旨在保护Web应用程序免受各种Web攻击,如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等。 WAF通…

第166天:应急响应-拒绝服务钓鱼指南DDOS压力测试邮件反制分析应用日志

案例一:内网应急-日志分析-爆破&横向&数据库 数据库 这里不同数据库日志不一样,我用mysql分析 首先MySQL数据库需要支持远程连接 GRANT ALL PRIVILEGES ON . TO root% IDENTIFIED BY 123.com WITH GRANT OPTION; 其次开启日志 -- 查看general…

Qt_线程介绍与使用

目录 1、QThread常用API 2、Qt线程安全 3、使用线程QThread 4、connect函数的第五个参数 5、Qt互斥锁 5.1 QMutexLocker 6、条件变量 7、信号量 结语 前言: 线程是应用程序开发非常重要的概念,在Qt中,用QThread类来实现多线程&a…

Spring项目中的统一结果返回

本文介绍的是通过Spring提供的接口进行结果统一封装,指的是成功返回的结果,不包含异常或者错误情况(这一块移步到统一异常处理)。另一种统一结果返回的方式,就是手动让每个接口的返回中类型都相同,这种方法…

ant design vue组件中table组件设置分组头部和固定总结栏

问题:遇到了个需求,不仅要设置分组的头部,还要在顶部有个统计总和的栏。 分组表头的配置主要是这个,就是套娃原理,不需要展示数据的直接写个title就行,需要展示数据的字段才需要详细的配置属性。 const co…

实现简易 vuedraggable 的拖拽排序功能

一、案例效果 拖拽计数4实现手动排序 二、案例代码 <draggable:list"searchResult.indicator":group"{ name: indicators }"item-key"field"handle".drag-handle-icon"><divclass"field-item"v-for"(item…

YOLOv8+注意力机制+PyQt5玉米病害检测系统完整资源集合

资源包含可视化的玉米病害检测系统&#xff0c;基于最新的YOLOv8注意力机制训练的玉米病害检测模型&#xff0c;和基于PyQt5制作的可视玉米病害系统&#xff0c;包含登陆页面和检测页面&#xff0c;该系统可自动检测和识别图片或视频当中出现的七类玉米病害&#xff1a;矮花叶病…

Java每日面试题(mysql优化)(day14)

目录 连接查询MySQL常用函数汇总SQL Select 语句的执行顺序数据库三范式MyISAM 存储引擎 与 InnoDB 引擎区别索引索引的优缺点索引的分类索引结构B树与B树的区别索引失效的几种情况 数据库锁MySql 优化 连接查询 MySQL常用函数汇总 SQL Select 语句的执行顺序 数据库三范式 第一…

物联网网络中集中式与分布式SDN环境的比较分析

论文标题&#xff1a;Comparative Analysis of Centralized and Distributed SDN Environments for IoT Networks 中文标题&#xff1a;物联网网络中集中式与分布式SDN环境的比较分析 作者信息&#xff1a; Khirota G. Yalda, Diyar J. Hamad, Nicolae Tapus罗马尼亚布加勒斯…

科研绘图系列:R语言树结构聚类热图(cluster heatmap)

文章目录 介绍加载R包导入数据数据预处理画图修改图形导出数据系统信息介绍 热图结合树结构展示聚类结果通常用于展示数据集中的模式和关系,这种图形被称为聚类热图或层次聚类热图。在这种图中,热图部分显示了数据矩阵的颜色编码值,而树结构(通常称为树状图或聚类树)则显…

【高中数学/函数/零点】求分段函数f(x)=x^2-4x+2(x>=1) f(x)=|lg(1-x)| (x<1)的零点个数

【问题】 已知分段函数f(x)x^22x(当x<0时)&#xff0c;f(x)|lgx|(当x>0时)&#xff0c;则函数g(x)f(1-x)-1的零点个数为几个&#xff1f; 【来源】 《高考数学极致解题大招》P137 变式训练第1题 中原教研工作室编著 【解答】 f(1-x)-10即f(1-x)1 当1-x>0,即x&l…

遍历9个格子winmine!StepBlock和遍历8个格子winmine!StepBox的对决

遍历9个格子winmine!StepBlock和遍历8个格子winmine!StepBox的对决 第一部分&#xff1a;windbg调试记录。 0: kd> g Breakpoint 10 hit winmine!DoButton1Up: 001b:0100390e a130510001 mov eax,dword ptr [winmine!xCur (01005130)] 0: kd> kc # 00 winmine…