当前位置: 首页 > news >正文

做少儿培训网站的公司中国建设银行注册网站用户名怎么填

做少儿培训网站的公司,中国建设银行注册网站用户名怎么填,做流量哪个网站好,wordpress插件/wordpress小工具0.本文适合谁? 1.刚学Java动态代理,被Proxy、InvocationHandler绕晕的同学 2.想彻底搞懂代理对象在内存中如何工作的开发者 3.需要面试突击动态代理知识的求职 1.动态代理的本质(三步走) 动态代理的核心可以拆解为三个关键…

0.本文适合谁?

1.刚学Java动态代理,被ProxyInvocationHandler绕晕的同学

2.想彻底搞懂代理对象在内存中如何工作的开发者

3.需要面试突击动态代理知识的求职
 

1.动态代理的本质(三步走)

动态代理的核心可以拆解为三个关键步骤:

(1)🔹 第一步:代理类持有目标对象引用

 

public class Person implements InvocationHandler {private Object target;  // ⭐关键!代理类持有目标对象public Person(Object target) {this.target = target;}
}

内存状态:

(2) 🔹 第二步:获取目标类方法

public Object invoke(Object proxy, Method method, Object[] args) {// method就是目标类的核心方法(如zf())return method.invoke(target, args);
}

方法调用栈:
[栈帧]
invoke(proxy, Method(zf), args)
    └── ZF.zf("小白","小黑",100.00)  // 真实调用

(3) 第三步:调用目标方法
 

proxy.zf("小白","小黑",100.00); 
// 实际执行流程:
// 1. 调用$Proxy0.zf() 
// 2. 转发给handler.invoke() 
// 3. 最终调用ZF.zf()

2.完整内存模型 

 🔵 方法调用时(栈堆联动)

proxy.zf("小白","小黑",100.00);

 3.执行流程

  1. 栈帧1main()调用proxy.zf()

  2. 栈帧2$Proxy0.zf()被调用(动态生成的代理方法)

  3. 栈帧3Person.invoke()执行拦截逻辑

  4. 栈帧4:最终调用ZF.zf()

4.完整的代码+运行结果 

 (1)接口定义 IZF.java

/*** 转账接口(抽象主题)*/
public interface IZF {void zf(String name1, String name2, double money);
}

(2)真实实现类 ZF.java

/*** 真实转账类(真实主题)*/
public class ZF implements IZF {@Overridepublic void zf(String name1, String name2, double money) {System.out.println(name1 + "向" + name2 + "转账" + money + "元");}
}

 (3)代理处理器 Person.java

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;/*** 代理处理器(实现InvocationHandler)*/
public class Person implements InvocationHandler {private Object target;  // 持有目标对象引用(关键点1)public Person(Object target) {this.target = target;}/*** 生成代理对象(关键点2)*/public Object getProxy() {return Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),this  // 传入InvocationHandler);}/*** 方法拦截(关键点3)*/@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("【代理前置操作】记录日志");Object result = method.invoke(target, args);  // 调用真实方法System.out.println("【代理后置操作】更新余额");return result;}
}

 (4)测试类 Test.java

/*** 测试动态代理*/
public class Test {public static void main(String[] args) {// 1. 创建真实对象IZF realObj = new ZF();// 2. 创建代理处理器(传入真实对象)Person handler = new Person(realObj);// 3. 获取代理对象(必须用接口接收!)IZF proxy = (IZF) handler.getProxy();// 4. 通过代理对象调用方法proxy.zf("小黑", "小白", 100.00);}
}

实现结果:
 

http://www.dtcms.com/a/566329.html

相关文章:

  • 唐山网站主页制作邢台123生活信息网
  • 爱美刻在线制作网站4399游戏网页版入口
  • 政务网站集约化建设有哪些做的好的小众网站
  • 济南seo网站关键词优化排名wordpress企业产品列表
  • 【cursor】常用使用技巧篇
  • 河北保定建设集团招聘信息网站百度是什么网站
  • 华为OD机试双机位A卷 - IPv4地址转换成整数 (C++ Python JAVA JS GO)
  • 个人网站不备案可以吗网站域名注册商标有什么好处
  • CSS实现跑马灯效果-案例
  • 1元云购网站怎样建设php做网站登陆验证
  • 织梦 营销型网站网络运维工程师有前途吗
  • 11. Qt 绘图-基础
  • 【LeetCode】组合问题——1863.找出所有子集的异或总和再求和(回溯)
  • 网站安全维护公司浙江省住房和城乡建设部网站
  • 成都哪些公司做网站好用网址进入的游戏
  • sparkSQL读取数据的方式
  • 国内免费建站网站wordpress教程视频教程
  • 网站logo显示新闻头条最新
  • MongoDB基本使用(包含工具类)
  • 和15岁女儿做很舒服网站网页设计软件排名
  • 高防IP真能100%防御DDoS攻击吗
  • 新建网站怎么做优化广州建设工程交易中心改版
  • 申请免费网站公司长春网站建设哪家好
  • SQL SERVER 索引
  • 深入浅出 Java 虚拟机之基础原理
  • 【数维杯赛中助攻+1,英文普刊知网检索+1】
  • 发布 php 微网站网站建设销售提成
  • 哈尔滨网站建设赚钱么自己做的视频网站上传电影
  • 建设电子商务网站前的市场分析合肥有哪些做网站的公司
  • 免费cms建站微网站开发平台 知乎