动态代理
来源:互联网 发布:matlab 数组横向拼接 编辑:程序博客网 时间:2024/05/16 10:29
先定义一个接口HouseInter
package com.cn;public interface HouseInter {public void rentHouse();public void cancelHouse();}
定义一个实现上面接口的类HouseOwner
package com.cn;public class HouseOwner implements HouseInter {public void rentHouse() {System.out.println("租房");}public void cancelHouse() {System.out.println("退房");}}
再写一个实现InvocationHandler的类ProxyHouse
package com.cn;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class ProxyHouse implements InvocationHandler{private Object target;public ProxyHouse(Object target){this.target = target;}public Object invoke(Object arg0, Method method, Object[] arg2)throws Throwable {//接口类的方法执行之前System.out.println("验证用户信息");//接口类的方法执行Object result = method.invoke(target, arg2);//接口类的方法执行之后System.out.println("结束");return result;}}
最后写一个测试类TestProxy
package com.test;import java.lang.reflect.Proxy;import com.cn.HouseInter;import com.cn.HouseOwner;import com.cn.ProxyHouse;public class TestProxy {public static void main(String[] args) {HouseInter houseInter = new HouseOwner();ProxyHouse proxy = new ProxyHouse(houseInter);//创建代理对象//这里的参数不用HouseInter.class.getClassLoader()否则会出现类转换异常HouseInter hi = (HouseInter)Proxy.newProxyInstance(houseInter.getClass().getClassLoader(), houseInter.getClass().getInterfaces(), proxy);hi.rentHouse();}}
测试结果
验证用户信息退房结束
- 代理-->静态代理&动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- Swing 在JLabel上实现连接,下划线,鼠标手型变化
- Vaadin Web应用开发教程(30):UI布局-GridLayout布局
- 微软的22道数据结构算法面试题(含答案)
- 图像处理--灰度化,二值化与反色
- HTML5能取代Android和iOS应用程序吗?
- 动态代理
- 浅谈前端开发的水有多深
- 二叉树的深度优先遍历、广度优先遍历和非递归遍历
- 收集一些top软件公司经典算法面试题
- 建立远程仓库
- windows远程控制ubuntu
- js 将table表格导出excel
- Excel首行固定与重复值比较
- C# 图像灰度处理